Python 将列表中的元素分组

Python 将列表中的元素分组,python,python-3.x,list,Python,Python 3.x,List,Python在向嵌套列表追加值时抛出错误。我正在尝试按相同的编号对列表进行排序。如果我有一个输入([1,2,1,1,2])我希望它作为[[1,1,1],[2,2]放在嵌套列表中 def find_it(seq): seq_count = [[]] seq_copy = seq for i in range(0, len(seq)): for k in seq_copy: if seq[i] == k:

Python在向嵌套列表追加值时抛出错误。我正在尝试按相同的编号对列表进行排序。如果我有一个输入
([1,2,1,1,2])
我希望它作为
[[1,1,1],[2,2]
放在嵌套列表中

def find_it(seq):
    seq_count = [[]]
    seq_copy = seq
    for i in range(0, len(seq)):
        for k in seq_copy:
            if seq[i] == k:
                seq_count[i].append(k)
    print(seq_count)


find_it([1, 2, 1, 1, 2])
所需输出:

[[1, 1, 1] ,[2, 2]]

python的方法是使用
集合中的
计数器

from collections import Counter
seq_count = [[i]*c for i,c in Counter(seq).items()]
产生
[[1,1,1],[2,2]]


如果您想使用显式循环,对于seq中的每个
i
,您必须首先循环
seq\u count
,检查是否有一个项目将
i
作为其第一个元素。如果是,则附加到该子列表,如果不生成新的子列表。如果您想这样做,初始化
seq_count
[]
而不是
[[]]
。仅当您有需要的项目时生成子列表。

seq_count[i]在这里,您在list seq\u count中只有1个嵌套列表项,但您正在访问seq\u count的第i项,所以这就是您出错的原因。请解释您试图执行的操作。这样,我们可以为您的代码提供帮助。顺便说一句,您可以将
范围(0,len(seq))
替换为
范围(len(seq))
您想要实现什么?为什么需要嵌套列表?我正在尝试按相同的数字对列表进行排序。如果我有一个输入([1,2,1,1,2]),我希望它作为[[1,1,1],[2,2]放在嵌套列表中