如何从列表中获取二维列表,但形状在另一个lis中定义

2024-09-30 06:33:22 发布

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

例如,我有这样的list

a = [143, 146, 152, 235, 246, 468, 476, 607, 615, 707, 712]

我想把它改成二维list,格式如下:

b = [
    [143, 146, 152],
    [235, 246],
    [468, 476],
    [607, 615],
    [707, 712]
]

或:

"143 146 152 
235 246
468 476
607 615
707 712" 

但是从list的形状= [3, 2, 2, 2, 2]

如何实现这个目标? 我有这样的想法:

devu = ''
for i in b:
    for j in range(i):
        devu += str(b[j])

devu += ' '
print(devu)

但结果是:

143146152 143146 143146 143146 143146 

Tags: in目标for格式rangelist形状print
3条回答

这是一种方法。使用iter和一个简单的迭代。你知道吗

演示:

a=[143, 146, 152, 235, 246, 468, 476, 607, 615, 707, 712]
a = iter(a)
shape =[3,2,2,2,2]

result = []
for s in shape:
    temp = []
    for i in range(s):
        temp.append(next(a))
    result.append(temp)
print(result)

输出:

[[143, 146, 152], [235, 246], [468, 476], [607, 615], [707, 712]]

如果您使用的是数据科学堆栈(例如pandas

>>> pd.Series(a).groupby(np.repeat(np.arange(len(s)),s)).agg(list).tolist()

[[143, 146, 152], [235, 246], [468, 476], [607, 615], [707, 712]]
a=[143, 146, 152, 235, 246, 468, 476, 607, 615, 707, 712]
shape=[3,2,2,2]
b=[ [] for item in shape] # creates empty lists in b
idx=0
for item in a:
   b[idx].append(item) # appending the next item
   shape[idx]-=1
   if b[idx]==0:
       idx+=1           
print(b)

相关问题 更多 >

    热门问题