Основные тезисы
1. Генераторы списков позволяют кратко и элегантно создавать новые списки из существующих. Синтаксис генератора списка выглядит следующим образом:
[expression for element in list if conditional]
который фактически является эквивалентом следующего кода:
for element in list:
if conditional:
expression
Вот пример генератора списка - код создает список из пяти элементов, заполненный первыми пятью натуральными числами, возведенными в степень 3:
cubed = [num ** 3 for num in range(5)]
print(cubed) # outputs: [0, 1, 8, 27, 64]
2. Вы можете использовать вложенные списки в Python для создания матриц (т.е. двумерных списков). Например:
# A four-column/four-row table ‒ a two dimensional array (4x4)
table = [[":(", ":)", ":(", ":)"],
[":)", ":(", ":)", ":)"],
[":(", ":)", ":)", ":("],
[":)", ":)", ":)", ":("]]
print(table)
print(table[0][0]) # outputs: ':('
print(table[0][3]) # outputs: ':)'
3. Вы можете вкладывать в списки столько списков, сколько захотите, тем самым создавая n-мерные списки, например, трех-, четырех- или даже шестидесяти четырехмерные массивы. Например:
# Cube - a three-dimensional array (3x3x3)
cube = [[[':(', 'x', 'x'],
[':)', 'x', 'x'],
[':(', 'x', 'x']],
[[':)', 'x', 'x'],
[':(', 'x', 'x'],
[':)', 'x', 'x']],
[[':(', 'x', 'x'],
[':)', 'x', 'x'],
[':)', 'x', 'x']]]
print(cube)
print(cube[0][0][0]) # outputs: ':('
print(cube[2][2][0]) # outputs: ':)'