list comprehension - начало
Limera1n
Сегодня поговорим о такой теме, как list comprehension.
Очень полезная штука, позволяет сэкономить много времени и сделать код более понятным и удобным. А суть этой штуки в том, что мы из, допустим, переменной со строкой "hello, world!" вытаскиваем в список отдельно каждый символ из этой строки, то есть список получается таким ['h', 'e', 'l', 'l', 'o'] ну и так далее. А происходит это всего в одну строчку, если не считать строчку для вывода. Сейчас покажу, как это все выглядит:

В данном примере мы создали некую переменную hello со строкой "hello, world!", дальше мы создали пустой список, в который мы будем записывать каждый символ нашей строки. Затем создаем цикл, думаю, уже понятно для чего, а если нет - ознакомьтесь с предыдущими уроками посвященными циклам. В конце цикла у нас записывается в наш пустой список все значения при помощи функции append, ну и выводится собственно сам список chars.
Достаточно долго и муторно, согласны? А сейчас я покажу, как можно избежать всей этой писанины буквально за 1 строку, не считая вывода и обозначения самой переменной, конечно же :)

Просто, да? В итоге ничего нового не появилось, за исключением первой l после квадратных скобок.
А что, если я вам скажу, что все это можно упростить еще? А вот смотрите:

То есть мы можем вообще не создавать переменную со строкой и получать такой же результат.
Таким же способом можно удобно инициализировать список состоящий из чисел, например от и до какого то числа, и нам не обязательно создавать список с числами. Мы можем просто использовать функцию range:

Я надеюсь, что вы помните, почему в range у нас пишется (0, 11), а в выводе от нуля до десяти. Если нет, то напомню - потому что второе число в range обозначает до какого числа будет идти список, а оно будет исключено из него.
В данном случае это очень удобно, потому что представьте, если у вас список идет от нуля до ста. Вы что, будете писать целый список перечисляя все числа до ста? Нет конечно же, это очень глупая и долгая работа. И вот как раз таки list comprehension в совокупности с range, в данном случае, позволяет упростить все донельзя.
На сегодня все. Не забывайте освежать в памяти то, что мы проходили ранее.