gpt4 book ai didi

python - 如果在另一个列表中,则从列表中删除项目(列表的列表)

转载 作者:行者123 更新时间:2023-11-30 22:24:56 24 4
gpt4 key购买 nike

我有一个如下所示的列表

a = [('Eth1', 'desc', 'date'), ('Eth2', 'dest', 'date'), ('Eth3', 'dest', 'date')]

我还有另一个列表:

b = = ['Eth1', 'Eth2']

我想删除 a 中所有出现的 b 及其相应的数据,所以现在我有

c = list(set(a) - set(b))
print c

我希望 c 看起来像这样

c = ['Eth3', 'dest', 'date']

但它只是以不同的顺序打印列表,就像这样

[('Eth2', 'dest', 'date'), ('Eth1', 'desc', 'date'), ('Eth3', 'dest', 'date')]

最好的方法是什么?

最佳答案

您需要列表理解:

In [4]: [tup for tup in a if tup[0] not in b]
Out[4]: [('Eth3', 'dest', 'date')]

请注意,您不能在此处使用 set 操作,因为您不想比较整个元组,而是比较第一个项目(然后根据它删除整个元组)。

此外,如果您的列表较长,您最好使用 set 来保留 b 的项目。原因是集合中的成员资格检查的复杂度为 O(1)。

为了完整起见,这里也是一个功能解决方案(在这种情况下不推荐,特别是如果您希望结果是一个列表):

In [7]: list(filter(lambda x: x[0] not in b, a))
Out[7]: [('Eth3', 'dest', 'date')]

关于python - 如果在另一个列表中,则从列表中删除项目(列表的列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com