【问题标题】:How can I select a specific number in a list with duplicates without removing the previous same values?如何在不删除先前相同值的情况下选择具有重复项的列表中的特定数字?
【发布时间】:2022-01-04 02:10:45
【问题描述】:

我在 python3 中有以下列表:

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]

我想要这样的输出:

b = [1, 2, 3, 1, 2, 4, 3]

我该怎么做?我已经尝试过a = set(a) 和其他消除重复项的方法。但他们会删除所有重复项。

【问题讨论】:

标签: python python-3.x duplicates


【解决方案1】:

如果你愿意使用某个模块,可以使用itertools.groupby

from itertools import groupby

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]

output = [k for k, _ in groupby(a)]
print(output) # [1, 2, 3, 1, 2, 4, 3]

【讨论】:

    【解决方案2】:

    这可行:

    a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]
    b = [a[0]]
    for k in a:
        if k!=b[-1]:
            b.append(k)
    print(b)
    

    【讨论】:

    • 非常感谢!
    【解决方案3】:

    如果你喜欢 C,你可能会喜欢这种风格:

    a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]
    b=len(a)
    i=0
    last_one=None
    while i<b:
        if a[i]==last_one:
            del a[i]
            b-=1
            continue
        else:
            last_one=a[i]
        i+=1
    print(a)
    
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      相关资源
      最近更新 更多