[英]Filter list of lists based on another list of lists
我正在嘗試根據Python中另一個列表列表的值過濾列表列表。
例如,我有:
list1 = [[0,1,2],[0,2,3]]
list2 = [['a','b','c'],['a','b','b']]
並希望過濾list1
,使其僅包含與list2
“a”相同的索引。 所以我想要的結果是
filteredList_a = [[0],[0]]
類似地,將list1
過濾為只包含與list2
'b'相同的索引的值
filteredList_b = [[1],[2,3]]
我知道如何為單個列表執行此操作,
>>> list1 = [0,1,2]
>>> list2 = ['a','a','b']
>>> [i for index, i in enumerate(list1) if list2[index] == 'a']
[0,1]
這是列表推導方法的擴展,具有嵌套列表推導和zip
以避免索引:
def filter_by(a, b, target):
return [[i for i, j in zip(x, y) if j == target] for x, y in zip(a, b)]
list1 = [[0,1,2],[0,2,3]]
list2 = [['a','b','c'],['a','b','b']]
print(filter_by(list1, list2, 'a'))
print(filter_by(list1, list2, 'b'))
輸出:
[[0], [0]]
[[1], [2, 3]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.