【问题标题】:How to make multiple variables in one list into one? [duplicate]如何将一个列表中的多个变量合二为一? [复制]
【发布时间】: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


    【解决方案1】:

    我会把列表变成一个集合:

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

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

    根据 OP 的要求

    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)
    

    【讨论】:

    • 我如何访问一个集合?它给了我 Cnew {'a', 'c', 'b'} 我希望它有序,即使我可以调用排序函数
    • 使用sortedlist。排序(列表(设置(C))
    • 有没有什么方法可以在没有设置功能的情况下做到这一点?因为我的任务真的专注于算法
    【解决方案2】:

    如果您想保留顺序并删除重复项,这是使用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)。当然,这完全取决于您要对输出做什么...

    【讨论】:

    • 第二个功能非常完美,谢谢
    • 有没有什么方法可以在没有设置功能的情况下做到这一点?因为我的任务真的专注于算法
    • 想想你需要做什么。浏览列表中的每个元素,检查您之前是否“看过”这些元素,并跟踪哪些元素已经“看过”...
    • 我真的卡住了! :( 你能不能让我可以访问#for j in range(len(final)): #if final.count(final[j]) > 1: #if j!= len(final)-1: #if final[j]==final[j+1]: #veryfinal.append(final[j]) #else: #veryfinal.append(final[j])
    【解决方案3】:

    你可以使用set(),所以:

    newset = set(c)
    print(new_set)
    

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 2023-03-20
      • 2016-04-22
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2019-10-01
      相关资源
      最近更新 更多