我有以下列表:
list1=[2,3,5,9,12]
另一个列表是list1
位置的索引
list2=[1,3]
我想将2
添加到在list1
中索引的list2
的位置值中
输出应为
[2,4,5,12,12]
我在想一个循环
for value in list2:
list1[value]+2
但是list1中没有任何更改,我确信应该有1行的方式来做到这一点。
答案 0 :(得分:2)
您的问题的解决方案是:
>>> for value in list2:
... list1[value] += 2
...
>>> list1
[2, 5, 5, 11, 12]
+=
是list1[value] = list1[value] + 2
的语法糖。当您使用list1[value] + 2
时,发生的事情是Python首先评估list1[value]
的值,然后将其加2,但是此值未存储在任何地方。
另一种方法是使用列表理解:
>>> list1=[2,3,5,9,12]
>>> list2=[1,3]
>>> list_final = [value + 2 if index in list2 else value for index, value in enumerate(list1)]
>>> list_final
[2, 5, 5, 11, 12]
这里
list_final = [value + 2 if index in list2 else value for index, value in enumerate(list1)]
我们构造了一个新列表list_final
,该列表基本上使用enumerate
创建一个元组列表,其中包含值对及其在list1
中的索引。如果该值的索引位于value + 2
中,则从此处添加到新列表list2
中,否则为普通值。
答案 1 :(得分:0)
您错过了在此处分配值的步骤:
list1[value]+2
这将计算出所需的值,但不会更改list1[value]
中存储的内容。
您可以使用=
或+=
来分配计算结果。