繁体   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