【问题标题】:list of duplicates on pythonpython上的重复项列表
【发布时间】:2016-10-29 01:12:02
【问题描述】:

如果我有一个列表,我如何从中创建重复列表的列表? 例如,如果我有列表

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

我希望输出是

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

【问题讨论】:

    标签: python list sage


    【解决方案1】:

    作为collections.Counter 答案的替代方案,您可以使用itertools.groupby

    import itertools
    
    L = [1,2,1,3,4,2,1,4]
    grouped = [list(group) for key, group in itertools.groupby(sorted(L))]
    print(grouped) # -> [[1, 1, 1], [2, 2], [3], [4, 4]]
    

    【讨论】:

    • 更好的答案!
    【解决方案2】:

    必须有大约一百种方法可以做到这一点。这是一个。如果您想要更多,因为这确实是一个 Python 问题,请将 Python 标记添加到您的问题中。

    >>> L = [1,2,1,3,4,2,1,4]
    >>> from collections import Counter
    >>> counts = Counter(L)
    >>> counts
    Counter({1: 3, 2: 2, 4: 2, 3: 1})
    >>> L1 = [ [ _ ]*counts[_] for _ in counts.keys() ]
    >>> L1
    [[1, 1, 1], [2, 2], [3], [4, 4]]
    

    【讨论】:

    • 很好的答案,我发现你的列表 comp 的格式有点难以阅读,所以可能像这样的格式会帮助 OP L1 = [[key] * counts[key] for key in counts.keys()]
    • @flybonzai:我不知道!不过我完全赞成。
    【解决方案3】:

    @Bill_Bell 答案的变体。

    >>> L = [1, 2, 1, 3, 4, 2, 1, 4]
    >>> from collections import Counter
    >>> counts = Counter(L)
    >>> counts
    Counter({1: 3, 2: 2, 4: 2, 3: 1})
    >>> L2 = [[a]*b for (a,b) in counts.items()]
    >>> L2
    [[1, 1, 1], [2, 2], [3], [4, 4]]
    

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 2015-06-07
      • 2020-02-01
      • 2012-12-12
      • 2011-10-04
      • 1970-01-01
      • 2021-04-17
      • 2013-08-28
      • 2023-01-24
      相关资源
      最近更新 更多