Заменить все элементы в списке Python

У меня есть этот пример кода, я хочу заменить каждую строку в «m» другой строкой, где строка по модулю 10 равна 0. Так, например, в моем коде мне нужен новый список: m = ['0001100001000110100000011011110001101010000010000000011100000001100101', '00011100000001101111']
Где ошибка в моем коде?

m = ['1100001000110100000011011110001101010000010000000011100000001100101', '11100000001101111']
for i in m:
        if len(i) % 10 != 0:
             i = ((10 - len(i) % 10) * "0" + i)
             m[i] = i
u = ''.join(chr(int(m[i*10:i*10+10],2)) for i in range(len(m)//10))
print("u= ", u)

Простое выполнение кода выдаст вам сообщение об ошибке, почему публикация здесь? m[i] = i - это ошибка.

mad_ 10.12.2018 19:21

вы используете i слишком много раз

depperm 10.12.2018 19:21
Почему в 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
437
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны были включить сообщение об ошибке в свой код, потому что оно должно быть довольно очевидно из сообщения об ошибке:

>>> m[i] = i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str

когда вы выполняете for i in m:, вы перебираете элементы m, а не индексы m. Вы, кажется, понимаете это большую часть пути, но я думаю, что ваша схема именования (i часто является индексом) вас сбила с толку.

Вы можете использовать enumerate для получения кортежа (index, value) из итерации:

for i, v in enumerate(m):
    if len(v) % 10 != 0:
         v = ((10 - len(v) % 10) * "0" + v)
         m[i] = v
# etc.

Если в логике вашего кода есть ошибка, это все равно может не работать, но это синтаксическая ошибка!

Небольшая ошибка, v = ((10 - len (v)% 10) * "0" + v) Большое спасибо.

Brian 10.12.2018 19:44

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