我有一个这样的清单:
a = [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']]
我想创建仅包含唯一元素的列表:
result = ['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover']
我该怎么做?感谢
答案 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']