列表列表中同一列表中元素的比较

时间:2018-07-22 19:31:33

标签: python list

这听起来很简单,但我无法为此提供适当的方法。 我想从包含两个相等元素的列表中删除整个列表。
EX

[[5,5,5],[5,10,5],[5,10,15],[5,10,10],[5,10,20]]

[[5,10,15],[5,10,20]]

注意-子列表的大小是固定的,即== 3。

2 个答案:

答案 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]]