Python将列表重塑为多维列表

use*_*r70 5 python list multidimensional-array python-3.x

我有一个列表,每个维度的长度都不同,如下所示:

list1=[[2,3,4],[1],[77,8,27,12],[25,15]]
Run Code Online (Sandbox Code Playgroud)

而且我还有另一个具有相同数量元素的列表,例如:

list2=[a,b,c,d,e,f,g,h,i,j]
Run Code Online (Sandbox Code Playgroud)

我想将list2重塑为list1,并在for循环中一起处理两个列表。

Den*_*loe 3

这是一种可爱的方式。

list1 = [[2,3,4],[1],[77,8,27,12],[25,15]]
list2 = list("abcdefghij")

list2_iterator = iter(list2)
list2_reshaped = [[next(list2_iterator) for _ in sublist] for sublist in list1]

print(list2_reshaped)

Out: [['a', 'b', 'c'], ['d'], ['e', 'f', 'g', 'h'], ['i', 'j']]
Run Code Online (Sandbox Code Playgroud)

我不知道纯粹的理解是否可能。

  • PS,你_总是_可以用纯推导式来做到这一点,但这并不总是一个好主意......要将赋值塞进推导式中(没有赋值表达式),只需在其他循环之外抛出一个 1 元素循环:`[[ next(list2_iterator) for _ in sublist] for list2_iterator in [iter(list2)] for sublist in list1]`。显然,它的可读性远不如你现在所拥有的。 (2认同)