从1D lis创建二维索引列表

2024-04-25 09:32:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个整数列表x,我想从中创建一个二维整数列表y。在这里,{{cd3}中的元素的值都是

例如,如果:

x = [2, 0, 1, 1, 2, 4],

然后:

^{pr2}$

如何在Python中整洁地完成这项工作?在


Tags: 元素列表整数pr2cd3整洁地
3条回答

这是我的快速解决方案

x = [2, 0, 1, 1, 2, 4]

y = []
for i, k in enumerate(x):
    if len(y) - 1 < k: #if our list isn't long enough for this value
        while (len(y) - 1 != k):
            y.append([]) #make it long enough
    y[k].append(i) #append our current index to this values list

print (y)

或者使用列表理解:

x = [2, 0, 1, 1, 2, 4]
y = [[j for j in range(len(x)) if x[j]==i] for i in range(max(x)+1)]

很简单:

y = [[] for _ in xrange(max(x)+1)]
for i, item in enumerate(x):
    y[item].append(i)

我们列出一个正确数量的列表,然后遍历并将每个索引添加到适当的子列表中。在

相关问题 更多 >