我有一个空的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
答案 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)
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
。
答案 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']