我正在用Python编写程序,并尝试根据某些条件增加列表中的数字。我的代码如下所示:
for i in list1:
if i+.1 in list2:
i+=.1
elif i+.2 in list2:
i+=.2
else:
i = i
然而,即使条件为真,这也不会给i添加任何内容。我怎样才能做到这一点?我知道列表理解,但在这种情况下看不出它是如何工作的。
答案 0 :(得分:2)
我建议使用enumerate
来获取值的索引,并使用括号更新列表,如下所示:
for i, value in enumerate(list1):
if value + .1 in list2:
list1[i] += .1
elif value + .2 in list2:
list1[i] += .2
else:
list1[i] = value # useless btw
<强>说明强>
在您的代码中,您将list1
的值分配给i
,但这些值实际上已复制到i
中,因此当您更改i
时,它不会更改{ {1}}。
要更新list1
,您必须list1
。您可以使用list1[index] += ...
获取索引。
此外,正如@SvenMarnach在下面的评论中所说,请注意浮动比较:例如enumerate
!