Как использовать понимание списка для хранения вложенного списка списка - PullRequest
3 голосов
/ 01 мая 2020

Мне было интересно, если бы у меня было nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]], как бы я мог разбить l oop и хранить только элементы в каждом из вложенных списков, что я имею в виду под l oop, что когда я пытаюсь :

result = [[value_1 for value_1 in a_list] for a_list in nested_list]

Единственный результат, который будет иметь ... это точный список, с которого мы начали: /. Итак, каков будет способ хранения таких предметов, как этот [1, 2, 3, 4, 5, 6, 7, 8, 9], с использованием понимания списка на nested_list. Я повторяю, понимание списка, а не 'для l oop'.

1 Ответ

2 голосов
/ 01 мая 2020

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

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
output = [item for sublist in nested_list for item in sublist]
print(output) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

Объяснение :

Когда вы используете понимание списка для вложенных циклов, структура выражения выглядит следующим образом:

  • Самое левое выражение, item, - это то, что будет содержать возвращаемый список.
  • Первый l oop слева - самый внешний l oop, for sublist in nested_list, поэтому первый Вы перебираете каждый элемент в своем входном списке и называете его sublist.
  • Самый правый l oop, for item in sublist - самый внутренний l oop. В вашем случае этот цикл повторяется по каждому элементу sublist и назовите его item, который в конечном итоге будет возвращен в выводе.
...