Python 使用列表中元素的位置创建子组

Python 使用列表中元素的位置创建子组,python,sublist,Python,Sublist,我必须根据元素的值创建具有列表中元素位置的子组,这意味着子组将包含列表中相同的元素 但是,子组的大小将取决于组的值 示例:A=[2,1,1,2,1]将创建[0,3][1][2][4] 我已经写了下面的代码。然而,并不是所有的测试用例都能通过 如果A=[2,1,2,1,2,2],则无法获得正确的输出。就我的情况而言,我得到: 0 2 4 5 1 3 然而,人们的期望是: 0 2 1 3 4 5 下面是我的代码: A = [2,1,1,2,1] uniqueCounts = [] for x i

我必须根据元素的值创建具有列表中元素位置的子组,这意味着子组将包含列表中相同的元素

但是,子组的大小将取决于组的值

示例:
A=[2,1,1,2,1]
将创建
[0,3][1][2][4]

我已经写了下面的代码。然而,并不是所有的测试用例都能通过


如果A=[2,1,2,1,2,2],则无法获得正确的输出。就我的情况而言,我得到:

0 2
4 5
1
3
然而,人们的期望是:

0 2
1
3
4 5
下面是我的代码:

A = [2,1,1,2,1]
uniqueCounts = []
for x in A:
    if x not in uniqueCounts:
        uniqueCounts.append(x)

for i in range(len(uniqueCounts)):
    n = uniqueCounts[i]
    p = [i for i,x in enumerate(A) if x == n]

    if(len(p)==1):
        print(*p)
    else:
        q = int(len(p)/n)
        count = 0
        c = 0
        while count < q:
            print(*p[c:n+c])
            c = c + n
            count = count + 1
A=[2,1,1,2,1]
唯一计数=[]
对于A中的x:
如果x不在唯一计数中:
唯一计数。追加(x)
对于范围内的i(len(uniqueCounts)):
n=唯一计数[i]
p=[i表示i,如果x==n,枚举(A)中的x]
如果(len(p)==1):
打印(*p)
其他:
q=int(len(p)/n)
计数=0
c=0
当计数
您应该使用numpy和函数
np.where()

输出:

ID = array([0, 3], dtype=int64)
然后,您可以使用此数组将其转换为列表,使用
形状
len
计算元素数。。。等等

要返回代码,请执行以下操作:

A = [2,1,1,2,1]
uniqueCounts = list(set(A))
set
正在返回一个没有重复项的集合。将其转换为列表将直接提供唯一计数

结论:

A = [2,1,1,2,1]
uniqueCounts = list(set(A))
A = np.asarray(A)

subgroup = list()

for elt in uniqueCounts:
    subgroup.append(tuple(np.where(A == elt)[0]))

要获得所需的输出,还需要做一些工作,我将告诉您:)

首先用唯一的元素对列表
A
进行排序。在不失去订单的情况下。然后从原始列表中查找排序列表中元素的所有索引

A = [2,1,1,2,1]
sortedA = sorted(set(A), key=A.index)
# [2, 1]

[[i for i,x in enumerate(A) if x==e] for e in sortedA]
# [[0, 3], [1, 2, 4]]

你是说
[0,3,1,2,4]
?如果A=[2,1,2,1,2,2],我就得不到正确的输出。就我的情况而言,我得到了:0.2,4.5,1,3。然而,期望值是:0 2,1,3,4 5第二个子列表包含[1,2,4]。但是,它应该是三个单独的子列表,如[1][2][4],我认为这是OP中的一个错误。他提到
根据元素的值从列表中创建元素位置的子组。因此,结果必须是
[03 1 2 4]
[0,3],[1,2,4]
A = [2,1,1,2,1]
sortedA = sorted(set(A), key=A.index)
# [2, 1]

[[i for i,x in enumerate(A) if x==e] for e in sortedA]
# [[0, 3], [1, 2, 4]]