如何使用此列表仅使用唯一元素创建列表?

时间:2013-04-30 11:16:13

标签: python list

我有一个这样的清单:

a =  [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']]

我想创建仅包含唯一元素的列表:

result = ['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover']

我该怎么做?感谢

3 个答案:

答案 0 :(得分:3)

假设订单很重要

>>> a =  [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']]
>>> from collections import OrderedDict
>>> list(OrderedDict.fromkeys(y for x in a for y in x))
['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover']

或等效地:

>>> from itertools import chain
>>> list(OrderedDict.fromkeys(chain.from_iterable(a)))

答案 1 :(得分:1)

如果顺序无关紧要 - 请使用set:

a =  [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']]
print list(set(y for x in a for y in x))  # prints ['Rostock', 'Hannover', 'Bremen', 'Lubeck', 'Hamburg']

答案 2 :(得分:0)

我发现这更具可读性:

a =  [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']]

result = []

for x in a:
    for y in x:
        if y not in result:
            result.append(y)

这是输出:

>>> print(result)
['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover']