l = list()

for i in range(10):
    l.append(i ** 2)
    
print(l)

"""
Explanation: <h1>Содержание<span class="tocSkip"></span></h1>
<div class="toc"><ul class="toc-item"></ul></div>

Генераторы списков
Иногда возникает необходимость создать список с определенными значениями элементов. Например, предподсчитать квадраты чисел или получить список вида [1, 2, 3, 4, 5, 6, ...], или даже просто получить список заполненный нулями.
Самый простой способ это с помощью метода append добавлять в конец списка нужные элементы, например:
End of explanation
"""


l = [i ** 2 for i in range(10)]
print(l)

"""
Explanation: В Python существует более простой способ делать подобные вещи, он называется генератор списка. Для понимания его можно рассматривать как сокращение записи с for, но, формально, он сокращением не является, это просто отдельная конструкция. Например, код, который делает то же самое, что и выше:
End of explanation
"""


l = [0 for i in range(10)]  # список длины 10 из нулей
print(l)

l1 = [0] * 10  # списки можно как и строки умножать на число, но этот способ имеет свои особенности, лучше генератор
print(l1)

l = [2 ** i for i in range(10)] # список длины 10 из степеней двоек
print(l)

"""
Explanation: Как можно попытаться запомнить конструкцию:
имя_списка = [элемент_добавляемый_в_конец for переменная in что-то_списокоподобное]
End of explanation
"""


l = list()

for i in range(10):
    if i % 2 == 1:
        l.append(i ** 2)
    
print(l) # в l квадраты нечетных чисел

l = [i ** 2 for i in range(10) if i % 2 == 1]
print(l)

"""
Explanation: На самом деле генераторы умеют "сокращать" еще более сложную запись. В конце генератора можно написать условие, при выполнении которого элементы будут добавляться. Например:
End of explanation
"""


a = [i for i in [1, 2, 3, 4, 5, 6] if i % 2 == 0]
print(a)

b = [c for c in "abcdef"]
print(b)

"""
Explanation: Так же можно делать со списками и строками:
End of explanation
"""


a = [1, 2, 3]
b = [str(i) for i in a]
print(b)

a = ['1', '2', '3']
b = [int(x) for x in a]
print(b)

"""
Explanation: Часто генератор используют для преобразования типа элемента:
End of explanation
"""


