我有两个清单:
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]
谢谢你们
答案 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]