簡體   English   中英

根據另一個列表列表過濾列表列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM