list1 = ['a','b','c','d']
list2 = [1,0,1,0]
鉴于上面的两个列表,我想获得第三个列表,其值为['a','c']
换句话说,我希望目标列表是list1中的值,其中list2中的对应元素为'1'
答案 0 :(得分:1)
在第二个列表上使用枚举功能包括索引,该索引可用于第一个列表。
[list1[i] for i, item in enumerate(list2) if item]
答案 1 :(得分:1)
如评论中所述:
[i for i, j in zip(list1, list2) if j]
可以工作。
或者,如果您正在寻找不太高级的东西:
list3 = []
for i in range(len(list1)):
if list2[i] == 1:
list3.append(list1[i])
答案 2 :(得分:0)
如果列表很长,生成器可能会很好:
def filterfunc(a, b, keyvalue=1):
return (x for i, x in enumerate(a) if b[i] == keyvalue)
要获取整个序列:
list(filterfunc(a, b))