在列表中列出具有条件的理解

时间:2017-07-05 10:07:07

标签: python list-comprehension

我有两个清单:

a=[1,0,0,1,0]
b=[23,10]

我想创建一个列表c,我希望结果是长度(a)列表,如果b [i]> a [i] - > c [i] = b [i]。即这个例子的结果应该是:

c=[23,0,0,10,0]

我有一个代码可以做到这一点,但它取决于循环,显然效率不高:

count=0
c=[0]*len(a)
for i in np.arange(len(a)):
    if a[i]==1:
        c[i]= b[count] 
        count=count+1
    else:
        c[i]=a[i]

谢谢你们

1 个答案:

答案 0 :(得分:2)

您可以在b上使用列表理解和迭代器:

>>> it = iter(b)
>>> [next(it) if x else x for x in a]
[23, 0, 0, 10, 0]

如果值不总是二进制,则可以在三元条件中进行显式的相等比较,如代码所示:

[next(it) if x==1 else x for x in a]