问题描述
我知道在Stack Overflow上已经问过很多类似的问题,但是我需要从列表中删除重复的元组,但不仅仅是它们的元素匹配,它们的元素必须是相同的顺序.换句话说,(4,3,5)
和(3,4,5)
都将出现在输出中,而如果同时存在(3,3,5)
和(3,3,5)
,则输出中将只有一个.
I know questions similar to this have been asked many, many times on Stack Overflow, but I need to remove duplicate tuples from a list, but not just if their elements match up, their elements have to be in the same order. In other words, (4,3,5)
and (3,4,5)
would both be present in the output, while if there were both(3,3,5)
and (3,3,5)
, only one would be in the output.
具体地说,我的代码是:
Specifically, my code is:
import itertools
x = [1,1,1,2,2,2,3,3,3,4,4,5]
y = []
for x in itertools.combinations(x,3):
y.append(x)
print(y)
其中的输出相当长.例如,在输出中,应该同时有(1,2,1)
和(1,1,2)
.但是应该只有一个(1,2,2)
.
of which the output is quite lengthy. For example, in the output, there should be both (1,2,1)
and (1,1,2)
. But there should only be one (1,2,2)
.
推荐答案
set
将解决此问题:
set
will take care of that:
>>> a = [(1,2,2), (2,2,1), (1,2,2), (4,3,5), (3,3,5), (3,3,5), (3,4,5)]
>>> set(a)
set([(1, 2, 2), (2, 2, 1), (3, 4, 5), (3, 3, 5), (4, 3, 5)])
>>> list(set(a))
[(1, 2, 2), (2, 2, 1), (3, 4, 5), (3, 3, 5), (4, 3, 5)]
>>>
set
将仅删除 exact 个重复项.
这篇关于如果重复的元组(包括项的顺序)完全相同,则从列表中删除它们的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!