从现有列表创建嵌套列表

时间:2018-11-29 11:55:39

标签: python python-3.x list nested-lists

我有一个名为“ V_List”的列表,需要它来构建嵌套列表。

    V_List = [145, 554, 784, 598, 632, 456, 8989, 123, 777]

我想要下面的嵌套列表,

   result = [ [145, 598, 8989], [554, 632, 123], [784, 456, 777] ]

应该有这样的模式, 第一个元素应该转到第一个嵌套列表, 第二个元素应该转到第二个嵌套列表, 第三元素应转到第三嵌套列表, 然后第4个应该转到第一个嵌套列表。...

我该怎么做?

4 个答案:

答案 0 :(得分:3)

所以您正在寻找:

total_lists = 3
result = [V_List[i::total_lists] for i in range(total_lists)]
result
#[[145, 598, 8989], [554, 632, 123], [784, 456, 777]]

因此,您可以使用total_lists变量来控制列表的最终数量。

答案 1 :(得分:1)

-编辑以适合EvilSmurf对Python3支持的评论 import math [[V_List[j * 3 + i] for j in range(math.ceil(len(V_List) / 3))] for i in range(3)]

说明:

对于每个%值(for i in range 3)的列表理解,使用另一个列表理解来获取相关项目的列表。

结果:

[[145, 598, 8989], [554, 632, 123], [784, 456, 777]]

答案 2 :(得分:0)

尝试一下。

nested = [[], [], []]
for item in V_List:
    nested[V_list.index(item) % 3].append(item)

答案 3 :(得分:0)

您可以将 列表理解 zip 组合在一起:

V_List = [145, 554, 784, 598, 632, 456, 8989, 123, 777]

V_List_splited = [list(i) for i in zip(V_List[:3] , V_List[3:6] , V_List[6:])]
print(V_List_splited)

输出:

C:\Users\Desktop>py x.py
[[145, 598, 8989], [554, 632, 123], [784, 456, 777]]