簡體   English   中英

對兩個列表的列表理解

[英]List comprehension on two lists

假設我有兩個等長列表, list1list2 ,都由一堆數字組成。 我想刪除不符合特定條件的所有list1元素。 很簡單。 但是,如何從list2刪除相應的元素呢? 如果我刪除了list1的第5個元素,那么我也想刪除list2的第5個元素。 下面我嘗試做的例子:

list1 = [i for i in list1 if i >= 1]
list2 = list2 #but with the corresponding values of list1 removed from list2 as well

我可以想出,

list2_temp = []
for j in range(len(list1)):
    if list1[j] >= 1:
        list2_temp.extend(list2[j])

list1 = [i for i in list1 if i >= 1]

但我正在尋找一種更“ Pythonic”的方法來實現此目的,特別是如果有任何方法可以在list2list1上使用列表list2 有什么想法/建議嗎?

合並,過濾,拆分:

list1[:], list2[:] = zip(*((x, y) for (x, y) in zip(list1, list2) if predicate(x)))

我認為問題可能在於您有2個並行列表,而不是一個單獨的列表,其中包含具有每個元素的所有數據的項目。

可以將數據視為電子表格-當前您有2列,並且要按一列中的值過濾行。 與其將數據建模為一堆列,不如將其建模為行列表。

現在要解決此問題,您可以將列表壓縮在一起,過濾它們,然后在末尾解壓縮:

items = [(i, j) for i, j in zip(list1, list2) if i >= 1]
tuple1, tuple2 = zip(*items)

但我仍然建議考慮以其他方式存儲數據...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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