根据另一个列表中的值过滤列表

时间:2020-09-08 01:19:11

标签: python-3.x list

list1 = ['a','b','c','d']
list2 = [1,0,1,0]

鉴于上面的两个列表,我想获得第三个列表,其值为['a','c']

换句话说,我希望目标列表是list1中的值,其中list2中的对应元素为'1'

3 个答案:

答案 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))