[英]List comprehension on two lists
假設我有兩個等長列表, list1
和list2
,都由一堆數字組成。 我想刪除不符合特定條件的所有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”的方法來實現此目的,特別是如果有任何方法可以在list2
和list1
上使用列表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.