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]]