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