Pythonic将嵌套列表操作为嵌套的chunked列表的方法

Ali*_*ani 2 python list

我有一个列表,其嵌套列表的大小可能会随着2的倍数而变化.目前,在此示例中,嵌套列表的长度为4.

a_list = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Run Code Online (Sandbox Code Playgroud)

根据长度,我试图打破列表,以最好的pythonic方式获得以下结果:

a = [[1,2], [5,6], [9,10]]
b = [[3,4], [7,8], [11,12]]
Run Code Online (Sandbox Code Playgroud)

如果嵌套列表的长度为6,那么

c = [[..], [..], [..]]
Run Code Online (Sandbox Code Playgroud)

它是一种嵌套列表的转置,但在一行中有2组值不能转置.

fal*_*tru 6

使用列表理解:

>>> a_list = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> a = [x[:2] for x in a_list]
>>> b = [x[2:] for x in a_list]
>>> a
[[1, 2], [5, 6], [9, 10]]
>>> b
[[3, 4], [7, 8], [11, 12]]
Run Code Online (Sandbox Code Playgroud)

更一般的解决方案

>>> [[x[i:i+2] for x in a_list] for i in range(0, len(a_list[0]), 2)]
[[[1, 2], [5, 6], [9, 10]],
 [[3, 4], [7, 8], [11, 12]]]
Run Code Online (Sandbox Code Playgroud)

  • 这仅解决了具体的例子. (2认同)