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

2024-06-23 19:46:05 发布

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

我有这样一个清单:

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

我只想创建具有唯一元素的列表:

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

我该怎么做?谢谢


Tags: 元素列表resulthamburghannoverlubeckbremenrostock
3条回答

我觉得这更具可读性:

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

假设秩序很重要

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

如果顺序不重要-使用集合:

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

相关问题 更多 >

    热门问题