元组列表中唯一项的列表

2024-09-24 10:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

如果我只需要像这样的slist中的唯一元素,应该如何修改?


Tags: in元素列表foritem元组slistmylist
3条回答
import itertools
chain = itertools.chain(*mylist)
print(set(chain))

取自Flattening a shallow list in Python并改编用于本问题。

实际上,通过使用itertools.chain.from_iterable,然后将结果传递给set,只保留唯一的元素,您可以使第一部分更简单一些:

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

使用set而不是列表。

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]

相关问题 更多 >