将值添加到另一个列表python的基于列表的索引

时间:2019-06-04 20:23:35

标签: python indexing

我有以下列表:

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行的方式来做到这一点。

2 个答案:

答案 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]中存储的内容。
您可以使用=+=来分配计算结果。