关于python:如何将一个列表中的多个变量合二为一?

How to make multiple variables in one list into one?

本问题已经有最佳答案,请猛点这里访问。
1
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']

我怎样才能把它变成这样一个新的变量呢?

1
Cnew=['a','b','c']

有什么功能或者我能做什么吗?


我会把清单变成一组:

1
2
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
Cnew = set(C)

集合的工作方式非常类似于列表,但它们只允许每个元素中的一个,这就是您想要的。但是,如果您真的想要一个列表,只需通过list函数将该集合转换回一个列表即可。

根据手术室的要求

1
2
3
4
5
6
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
cNew = []
for value in C:
    if value not in cNew:
        cNew.append(value)
print(cNew)


您可以使用set(),因此:

1
2
newset = set(c)
print(new_set)


如果要保留订单并删除重复项,可以使用collections.OrderedDict的一种方法:

1
2
3
4
from collections import OrderedDict

C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
new_C = list(OrderedDict.fromkeys(C).keys())

虽然这似乎也足以满足您的用例:

1
new_C = sorted(set(c))

如果您还不知道的话,也值得注意的是,在list对象(您所需输出的数据结构)中查找(检查成员资格)具有时间复杂性O(n),而在set对象中查找是O(1)。当然,这完全取决于你想用你的输出做什么……