在给定索引处将给定值分配给列表的元素

时间:2014-04-07 15:29:29

标签: python list list-comprehension

给出一些输入

L=[0]*5

L1=[2,3]
L2=[12,13]

我要求的结果是:

L=[0,0,12,13,0]

我知道如何通过“蛮力”得到这个,但我的问题是,是否有一种“Pythonic”方式来获取它,例如列表理解?

3 个答案:

答案 0 :(得分:2)

试试这个:

import numpy as np

L=np.zeros(5)
L1=np.array([2,3])
L2=np.array([12,13])

L[L1] = L2

print L
# array([  0.,   0.,  12.,  13.,   0.])

答案 1 :(得分:1)

不确定这对你来说是否足够pythonic:

>>> for i,j in enumerate(L1):
...    L[j]=L2[i]
...
>>> L
[0, 0, 12, 13, 0]

并使用列表理解:

>>> [L[i] if i not in L1 else L2[L1.index(i)] for i in range(len(L))]
[0, 0, 12, 13, 0]

答案 2 :(得分:0)

我不认为这是非常pythonic,但它列表理解。

[l.__setitem__(i, l2.pop(0)) for i in l1]