my_list = [['mango', 'apple', 'mango'], ['papaya', 'orange'], ['berry', ' berry'], ['watermelon', 'banana']]
因此,如果子列表包含两个相同的变量,则将其缩减为空列表。所以输出应该是
my_list = [[], ['papaya', 'orange'], [], ['watermelon', 'banana']]
期望的输出
my_list = [['papaya', 'orange'], ['watermelon', 'banana']]
所以浆果是一个相同的变量被简化为空集。芒果也是如此。
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']]
答案 0 :(得分:1)
您可以将列表推导与三元运算符一起使用,将子列表的大小与从该子列表创建的集合的大小进行比较。
>>> [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']]
:< / p>
bootRepackage {
withJarTask jar
}
如果您想完全删除列表,只需将条件放在后面,如上所述。
答案 1 :(得分:0)
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']]
答案 2 :(得分:0)
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']]
答案 3 :(得分:0)
使用set
。 set
包含唯一元素。所以,想法是检查长度
长度为set
的{{1}}。如果两者不相同。然后存在重复元素,否则不存在。
list
答案 4 :(得分:0)
my_list = [['mango','apple','mango'],['papaya','orange'],['berry','berry'],['watermelon','banana']]
from collections import Counter
my_list = [ [] if max(Counter(x).values()) > 1 else x for x in my_list]
pp(my_list)
[[], ['papaya', 'orange'], [], ['watermelon', 'banana']]