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

2024-05-16 13:01:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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']]

Tags: inapple列表formynotlistbanana
3条回答
my_list = [['mango','apple','mango'],['papaya','orange'],['berry','berry'],['watermelon','banana']]
print [i for i in my_list if not any(i.count(j)>1 for j in i)]

输出:[['papaya', 'orange'], ['watermelon', 'banana']]

您可以在这里使用any来查看是否有任何元素被重复。你知道吗

如果要空列表,请使用

my_list = [['mango','apple','mango'],['papaya','orange'],['berry','berry'],['watermelon','banana']]
print [i if not any(i.count(j)>1 for j in i) else [] for i in my_list ]

输出:[[], ['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']]

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

my_list = [ ["mango","apple","mango"],["papaya","orange"],["berry","berry"],["watermelon","banana"] ]
print [i for i in my_list if len(i)==len(set(i))]

输出:

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

对于空列表:

my_list = [ ["mango","apple","mango"],["papaya","orange"],["berry","berry"],["watermelon","banana"] ]
print [i if len(i)==len(set(i)) else [] for i in my_list]

输出:

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

相关问题 更多 >