我有一个列表,其嵌套列表的大小可能会随着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组值不能转置.
使用列表理解:
>>> 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)