【发布时间】:2017-09-20 05:59:27
【问题描述】:
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
我如何将它变成这样的新变量。?
Cnew=['a','b','c']
有什么功能或者什么我可以做的吗?
【问题讨论】:
标签: python python-3.x
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
我如何将它变成这样的新变量。?
Cnew=['a','b','c']
有什么功能或者什么我可以做的吗?
【问题讨论】:
标签: python python-3.x
我会把列表变成一个集合:
C= ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
Cnew = set(C)
Set 的工作方式与列表非常相似,但它们只允许每个元素中的一个,这正是您想要的。但是,如果您真的想要一个列表,只需通过 list 函数将集合转换回列表即可。
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)
【讨论】:
sorted 和list。排序(列表(设置(C))
如果您想保留顺序并删除重复项,这是使用collections.OrderedDict 的一种方法:
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())
虽然看起来这也足以满足您的用例:
new_C = sorted(set(c))
同样值得注意的是,如果您还不知道,list 对象(来自您所需输出的数据结构)中的查找(检查成员资格)具有时间复杂度 O(n),而set 对象的查找是 O(1)。当然,这完全取决于您要对输出做什么...
【讨论】:
你可以使用set(),所以:
newset = set(c)
print(new_set)
【讨论】: