Создание вложенного списка из существующего списка - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть список с именем "V_List", который мне нужен для создания вложенного списка.

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

Я хочу, чтобы мой вложенный список был следующим,

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

У него должен быть шаблон примерно такой, 1-й элемент должен быть перемещен в 1-й вложенный список, 2-й элемент должен быть перемещен во 2-й вложенный список, 3-й элемент должен быть перемещен в 3-й вложенный список, и снова 4-йследует перейти к 1-му вложенному списку ....

Как мне сделать что-то подобное?

Ответы [ 4 ]

0 голосов
/ 29 ноября 2018

Вы можете объединить список-понимание и 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]]
0 голосов
/ 29 ноября 2018

попробуйте это.

nested = [[], [], []]
for item in V_List:
    nested[V_list.index(item) % 3].append(item)
0 голосов
/ 29 ноября 2018

Итак, вы ищете это:

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.

0 голосов
/ 29 ноября 2018

- отредактировано в соответствии с комментарием 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]]

...