Как добавить один в элемент списка?

У меня есть пустой list с именем mylist, который выглядит так:

[None,None,None,None,None,None,None]

У меня есть цикл for, который будет добавлять один элемент к каждому элементу каждый раз, когда он заканчивается.

Я пытаюсь добавить 1 к элементу, используя:

mylist[i] = mylist[i]+1 

но я получаю сообщение об ошибке:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

Количество раз, когда список повторяется по изменениям, поэтому нельзя просто добавить один ко всем элементам.

Код, который я использую:

for j in range(0,bucketSize):
    for i in range (0,minibuckets):
        list[i] = list[i]+1

Разве этот цикл for не означает просто: mylist[:miniBuckets] = [el or 0 + bucketSize for el in mylist[:miniBuckets]]? Если только я что-то не упустил...

Jon Clements 28.04.2019 13:20

Вы можете использовать False вместо None: False + 1 -> 1

Mykola Zotko 28.04.2019 13:36
Почему в 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
71
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Вы должны инициализировать свой список как [0, 0, 0, 0, 0, 0, 0], потому что вы не можете сделать None + 1. На самом деле не имеет смысла пытаться добавить 1 к чему-то, что фактически ничего не значит. None — это совсем другое понятие, чем 0.

Например:

mylist = [0] * 7
# or
mylist = [0 for i in range(7)]

 

В качестве альтернативы вы можете проверить None во внутреннем цикле for:

if mylist[i] is None:
    mylist[i] = 1
else:
    mylist[i] += 1

Или та же проверка в одну строку:

mylist[i] = mylist[i] + 1 is mylist[i] is not None else 1

None сильно отличается от 0. По сути, это не имеет никакой ценности.

Простое решение — просто проверить наличие None в цикле.

for j in range(0,bucketSize):
    for i in range (0,minibuckets):
        if list[i] is None:
            list[i] = 1
        else:
            list[i] = list[i]+1 

В качестве альтернативы инициализируйте свой список 0 или замените None на 0 перед запуском.

Вы можете сделать что-то вроде этого, если вы не можете изменить None на 0:

mylist[i] = mylist[i]+1 if mylist[i] else 1

Используйте простое понимание списка:

my_list = [None,None,None,None,None,None,None]

print(['1' if v is None else v for v in my_list])

Выходы:

['1', '1', '1', '1', '1', '1', '1']

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