将一个添加到列表元素

时间:2019-04-28 11:08:44

标签: python

我有一个空的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

4 个答案:

答案 0 :(得分:4)

您应该将列表初始化为[0, 0, 0, 0, 0, 0, 0],因为您不能执行None + 1。尝试将1加到实际上什么都不是的地方上确实没有任何意义。 None是一个与0截然不同的概念。

例如:

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

或者,您也可以在内部for循环中检查None

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

答案 1 :(得分:2)

None0有很大的不同。实际上,它根本没有价值。

一个简单的解决方案是在循环中检查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

答案 2 :(得分:0)

如果无法将None更改为0,则可以执行以下操作:

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

答案 3 :(得分:0)

使用简单的列表理解:

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']