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

Python 列表列表中同一列表中元素的比较,python,list,Python,List,这听起来很容易,但我无法给出一个正确的方法。 我想从包含两个相等元素的列表中删除整个列表。 前 出去 注意-子列表的大小是固定的,即==3。可以通过列表理解来完成,如下所示- [i for i in my_list if len(set(i)) == len(i)] 我们在这里做的是使用set(i),检查列表中有多少唯一元素,如果在set之后,它仍然包含3个元素,这意味着所有元素都是唯一的,我们需要该列表 如果我们看一下代码和列表- my_list = [[5,5,5],[5,10,5],[5

这听起来很容易,但我无法给出一个正确的方法。 我想从包含两个相等元素的列表中删除整个列表。

出去


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

可以通过列表理解来完成,如下所示-

[i for i in my_list if len(set(i)) == len(i)]
我们在这里做的是使用
set(i)
,检查列表中有多少唯一元素,如果在set之后,它仍然包含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]]

可以将元素的长度作为集合与原始列表的长度进行比较:

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

首先制作一个函数,检查列表是否包含两个相等的元素。然后,一旦您的工作达到满意的程度,您就可以使用列表理解。如果是,您可以使用来比较
len(i)
,更新如果我不想使用set怎么办,并为此目的对子列表中的元素进行比较。@RitikSamaiya为什么不想使用set?它们非常高效,可能提供最好的性能。@RitikSamaiya我不确定我是否理解您的后一个用例。如果不想使用集合,
collections.Counter
可以应用于每个元素,并使用
any
进行迭代,检查是否至少有一个子元素出现两次。但是再次强调,使用
集合
非常有效,正如我刚才详细介绍的使用
集合。计数器
。你们都非常正确。但是我只是想用基本的python来实现这个表达式,这就是为什么我这么问的原因。专门用于构建用于比较的逻辑。@RitikSamaiya:集合是基本Python的一部分。如果你想避免他们,你需要一个比你给出的更好的理由。
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]]