元组对列表中的唯一单值?

时间:2017-02-05 23:16:10

标签: python

从这个数据结构:[(1,2),(1,3),(1,4),(1,5)]我想要获得唯一值,或[1,2,3,4,5]。这里有什么简单的解决方案?

3 个答案:

答案 0 :(得分:3)

您可以将set与列表理解结合使用:

lst = [(1,2),(1,3),(1,4),(1,5)]

set(j for i in lst for j in i)
# {1, 2, 3, 4, 5}

答案 1 :(得分:1)

使用chain.from_iterable模块中的itertools。它通常被认为是展平2D迭代的惯用方式,而不是嵌套列表理解。请参阅this问题。

>>> from itertools import chain
>>> set(chain.from_iterable([(1,2),(1,3),(1,4),(1,5)]))
{1, 2, 3, 4, 5}

chain.from_iterable展开列表,set仅保留唯一值。

要转换回列表,只需传递给list构造函数。

>>>list(set(chain.from_iterable([(1,2),(1,3),(1,4),(1,5)])))
[1, 2, 3, 4, 5]

答案 2 :(得分:0)

在您的预期输出中,唯一元素的顺序遵循外观顺序。一种方法是(使用外部库但配方在itertools-recipes section中可用):

>>> from iteration_utilities import flatten, unique_everseen

>>> x = [(1,2),(1,3),(1,4),(1,5)]

>>> list(unique_everseen(flatten(x)))
[1, 2, 3, 4, 5]