Python 元组列表中唯一项的列表

Python 元组列表中唯一项的列表,python,list,tuples,Python,List,Tuples,我有一个这样的元组列表:mylist=[(1,2,3),(6,1,1),(7,8,1),(3,4,5)]。如果我使用列表理解slist=[子列表中的子列表的项],我可以得到slist=[1,2,3,6,1,1,7,8,1,3,4,5] 如果我只需要像这样的[1,2,3,6,7,8,4,5]列表中的唯一元素,我应该如何修改?使用列表而不是列表 set(slist) 如果确实需要将其作为列表,则可以将其转换回列表: slist = list(set(slist)) 请注意,此转换不会保留元素的原

我有一个这样的元组列表:
mylist=[(1,2,3),(6,1,1),(7,8,1),(3,4,5)]
。如果我使用列表理解
slist=[子列表中的子列表的项]
,我可以得到
slist=[1,2,3,6,1,1,7,8,1,3,4,5]

如果我只需要像这样的
[1,2,3,6,7,8,4,5]
列表中的唯一元素,我应该如何修改?

使用列表而不是列表

set(slist)
如果确实需要将其作为列表,则可以将其转换回列表:

slist = list(set(slist))
请注意,此转换不会保留元素的原始顺序。如果您需要相同的订单,您可以使用此订单:

>>> result = []
>>> seen = set()
>>> for innerlist in mylist:
        for item in innerlist:
            if not item in seen:
                seen.add(item)
                result.append(item)
>>> result
[1, 2, 3, 6, 7, 8, 4, 5]

您应该使用python集


它会起到作用

通过使用并将结果传递给,您实际上可以使第一部分变得更简单,这只会保留唯一的元素:

>>> mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)]
>>> import itertools
>>> set(itertools.chain.from_iterable(mylist))
set([1, 2, 3, 4, 5, 6, 7, 8])

摘自并改编用于本问题。

我可以在这里问个问题吗?seen中的
项(在
set
对象中查找)的此操作的复杂性是什么?它和在
dict
object中查找一样有效吗?@ovgolovin:是的,它应该和dict一样快。给你。复杂性看起来是一样的,但是对于
set
他们使用了
最坏情况
术语,对于
dict
他们使用了
摊销最坏情况
术语。我想知道为什么。
>>> mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)]
>>> import itertools
>>> set(itertools.chain.from_iterable(mylist))
set([1, 2, 3, 4, 5, 6, 7, 8])
import itertools
chain = itertools.chain(*mylist)
print(set(chain))