从重复元素列表创建非重复元素列表。仅使用列表理解

Creating a list of non-repetitive elements from repetitive-elemets list. Using list-comprehansion only

如何将下面的 "for-loop" 转换为“列表理解? 我想从重复元素列表中创建一个非重复元素列表。

many_colors = ['red', 'red', 'blue', 'black', 'blue']

colors = []
for c in many_colors:
  if not c in colors:
    colors.append(c)
# colors = ['red', 'blue', 'black']

我试过这个(如下),但出现颜色未定义的错误。

colors = [c for c in many_colors if not c in colors]

使用套装让您的生活更轻松:

colors = [c for c in set(many_colors)]

您可以在 python 中使用 set,它表示唯一元素的无序集合。

使用:

colors = list(set(many_colors))
print(colors)

这会打印:

['red', 'black', 'blue']

colors仅在领悟完成后存在。 理解甚至可能不是最佳的。你可以做到

colors = list(set(colors))

如果你想保持出现的顺序:

from collections import OrderedDict

colors = list(OrderedDict.fromkeys(many_colors))