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']]发布于 2015-10-30 10:21:26
可以在三元运算符中使用列表理解,将子列表的大小与从该子列表创建的集合大小进行比较。
>>> 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']]如果您想要完全删除列表,只需将条件放在后面,如上面所示。
发布于 2015-10-30 10:19:07
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']]发布于 2015-10-30 10:22:15
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']]
https://stackoverflow.com/questions/33433524
复制相似问题