Как узнать, сколько пакетов «1» содержится в строке в Python3?

Я пытаюсь узнать, сколько пакетов «1» есть в строке, которая будет состоять только из 1 и 0.

For example,

For 1011011, the number bundles of '1' will be 3 since bundles are 1, 11, 11 excepting 0s.

For 11101110101, it will be 4 as well since the bundles are 111, 111, 1, 1.

Есть ли какой-нибудь Pythonic и краткий способ решения этой проблемы?

в последнем примере не будет ли это 4?

Eternal 07.02.2019 12:42

@PriteshThaker Спасибо за исправление :) Я отредактировал :)

Backrub32 07.02.2019 12:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
77
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Это легко.

import re
string = "11101110101"
bundles = re.findall(r'1+',string)

Используйте жадный поиск для поиска самой длинной последовательности 1's. Теперь re.findall жадно просматривает всю строку и возвращает список. Этот список будет содержать все вхождения 1, которые содержат группы 1. Если вы хотите напечатать общее количество пакетов, используйте это:

print(len(bundles))
Выход:
4

вот как вы это делаете. разделите строку на 0, а затем удалите пустые элементы из возвращаемого списка, а затем напечатайте длину списка

string = '0000'
x = string.split('0')
while "" in x:
    x.remove('')
print(len(x))

другой подход будет использовать понимание цикла для удаления пустого.

string = '0000'
x = string.split('0')
x = [y for y in x if y != ""]
print(len(x))

Самый простой способ (напечатать) таков:

s = "11101110101"
print( zip("0"+s,s).count( ('0','1') ) )

Объяснить, почему это работает, немного сложнее, но это хорошая практика для программирования в целом. Каждая из связок единиц начинается с подстроки «01», за исключением случая, когда строка начинается с единицы. Если вы считаете только эти пары смежных символов, то вы точно считаете пакеты.

Сжатие строки со смещением строки на единицу даст все пары символов, например.

>>> s = "111001101011"
>>> print( zip(s,s[1:]) )
[('1', '1'), ('1', '1'), ('1', '0'), ('0', '0'), ('0', '1'), ('1', '1'), ('1', '0'), ('0', '1'), ('1', '0'), ('0', '1'), ('1', '1')]

Все, что осталось сделать, это исправить угловой регистр, где он может начинаться с «1», добавив дополнительный «0» к началу.

Наслаждаться.

Вы можете использовать itertools.groupby и использовать '0' в качестве символа разделения:

>>> from itertools import groupby

>>> s = '11101110101'
>>> sum(1 for k, g in groupby(s, '0'.__eq__) if not k)
4

Это не особенно красиво, но это работает.

Строка, которая будет состоять только из 1 и 0

s = raw_input("Enter: ")
print(len([i for i in s.split("0") if i! = ""]))

Что делать, если в строке повторяются нули? Например. 10110011

Peter Wood 07.02.2019 14:05

Теперь проверьте мой отправленный код еще раз и сообщите мне, если вы обнаружите какой-либо неудачный тестовый пример.

Devendra 08.02.2019 09:10

Другие вопросы по теме