有条件地增加列表中的数字

时间:2015-07-30 20:18:16

标签: python list loops

我正在用Python编写程序,并尝试根据某些条件增加列表中的数字。我的代码如下所示:

for i in list1:
     if i+.1 in list2:
         i+=.1
     elif i+.2 in list2:
         i+=.2
     else:
         i = i

然而,即使条件为真,这也不会给i添加任何内容。我怎样才能做到这一点?我知道列表理解,但在这种情况下看不出它是如何工作的。

1 个答案:

答案 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