这听起来很简单,但我无法为此提供适当的方法。
我想从包含两个相等元素的列表中删除整个列表。
EX
[[5,5,5],[5,10,5],[5,10,15],[5,10,10],[5,10,20]]
出
[[5,10,15],[5,10,20]]
注意-子列表的大小是固定的,即== 3。
答案 0 :(得分:4)
您可以将元素的长度作为集合与原始列表的长度进行比较:
d = [[5,5,5],[5,10,5],[5,10,15],[5,10,10],[5,10,20]]
new_d = [i for i in d if len(set(i)) == len(i)]
输出:
[[5, 10, 15], [5, 10, 20]]
答案 1 :(得分:3)
可以通过列表理解来完成,就像这样-
[i for i in my_list if len(set(i)) == len(i)]
我们在这里所做的是使用set(i)
检查列表中有多少个唯一元素,如果设置后,它仍然包含3个元素,这意味着所有元素都是唯一的,并且我们需要该列表。
如果我们看一下代码和列表-
my_list = [[5,5,5],[5,10,5],[5,10,15],[5,10,10],[5,10,20]]
# [i for i in my_list] will get us [5,5,5], [5,10,5] ...
# applying set(i) on, for example first i will give us set([5])
# and len(set([5])) is not equal to len(i)
# therefore O/P will be
O/P = [i for i in my_list if len(set(i)) == len(i)]
#[[5, 10, 15], [5, 10, 20]]