gpt4 book ai didi

python - 当两个列表匹配python时返回空集

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:24 25 4
gpt4 key购买 nike

my_list = [['mango', 'apple', 'mango'], ['papaya', 'orange'], ['berry', ' berry'], ['watermelon', 'banana']]

因此,如果一个子列表包含两个相同的变量,则它会缩减为一个空列表。所以输出应该是

my_list = [[], ['papaya', 'orange'], [], ['watermelon', 'banana']] 

期望的输出

my_list = [['papaya', 'orange'], ['watermelon', 'banana']]

因此,作为相同变量的 berry 被简化为一个空集。芒果也是如此。

i = 0
j = 0
for x in my_list[i]:
for y in my_list[j]:
if x == not x:
list[i][j].pop()
else:
continue
print my_list

可以使用列表理解来完成吗?

添加到我的问题:

my_list = [['not mango', 'apple', 'mango'], ['not papaya', 'orange'], ['berry', 'not berry'],['watermelon', 'banana']

输出:

my_list = [['not papaya, orange'], ['watermelon', 'banana']]

最佳答案

您可以使用带三元运算符的列表理解,将子列表的大小与从该子列表创建的集合的大小进行比较。

>>> my_list = [['mango','apple','mango'],['papaya','orange'],['berry','berry'],['watermelon','banana']]
>>> [lst if len(lst) == len(set(lst)) else [] for lst in my_list]
[[], ['papaya', 'orange'], [], ['watermelon', 'banana']]

或者如果您想完全删除这些列表(从您的问题中不清楚您想要什么),请使用条件列表理解。

>>> [lst for lst in my_list if len(lst) == len(set(lst))]
[['papaya', 'orange'], ['watermelon', 'banana']]

关于您编辑的问题:如果您想检查是否有任何 "x""not x" 也在列表中,您不能只比较大小但必须使用 any:

>>> my_list = [['mango', 'apple', 'not mango'], ['not papaya', 'orange'], ['berry', 'not berry'], ['watermelon', 'banana']]
>>> [lst if not any("not " + x in lst for x in lst) else [] for lst in my_list]
[[], ['not papaya', 'orange'], [], ['watermelon', 'banana']]

如果你想完全删除列表,只需将条件放在后面,如上所述。

关于python - 当两个列表匹配python时返回空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433524/

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