(Учебное пособие) Список понятий в Python с примерами и кодом.
Что такое понимание списка?
Проще говоря, понимание списка — это сокращение от «цикла for» в Python. Например, если мы хотим возвести каждое число в степень двойки, мы можем выполнить простой цикл for:
range_100_items = range(100) squares = [] for x in range_100_items: squares.append(x**2)
или мы можем просто использовать понимание списка:
range_100_items = range(100) squares_list_comprehension = [x**2 for x in range_100_items]
Вывод обоих методов одинаков:
print(squares) print(squares_list_comprehension) output: [0, 1, 4, 9, 16, 25 …, 9801]
Синтаксис для понимания списка следующий:
list_comprehension_output = [expression for item in list] list_comprehension_output = [x**2 for x in range_100_items]
В нашем случае:
- выражение — «x**2»
- item равен «x»
- список – это "диапазон_100_элементов".
— не правда ли, очень просто и изящно? :)
Примечание: выражение является обязательным, даже если вы не собираетесь каким-либо образом преобразовывать данные. Просто напишите: [x вместо x в списке]
Как мы можем добавить операторы if в понимание списка:
Есть два места, где мы можем применить оператор if внутри понимания списка:
- в конце части списка ввода
- в начале в части выражения
Давайте посмотрим, как мы можем использовать оператор if в части списка ввода:
Чтобы возвести в квадрат только числа меньше 50, мы можем просто добавить if в конце, например:
squares_list_comprehension_if = [x**2 for x in range_100_items if x < 50]
Чтобы возводить в степень 2 только числа меньше 50 и больше 40, мы можем просто добавить:
squares_list_comprehension_if_and = [x**2 for x in range_100_items if x < 50 and x > 40]
Давайте посмотрим, как мы можем использовать операторы if в разделе выражений.
Например, чтобы сделать числа меньше 5 в квадрате и добавить 100 к остальным числам, мы можем написать:
squares_and_plus_100_list_comprehension = [x**2 if x < 5 else x+100 for x in range_100_items]
Время для других вариантов использования:
- Получить сумму подсписков внутри списка:
matrix = [[1], [10, 20], [30, 40, 50]] sum_of_lists = [sum(val) for val in matrix] print(sum_of_lists)
вывод:
[1, 30, 120]
2. Сгладить матрицу из 2d в 1d:
matrix = [[1], [10, 20], [30, 40, 50]] flatten = [val for val_list in matrix for val in val_list] print(flatten)
вывод:
[1, 10, 20, 30, 40, 50]
3. Получить все животные из списка кортежей:
input = [(1, 'dog'), (2, 'cat'), (3, 'bird')] animal_list = [animal[1] for animal in input] print(animal_list)
вывод:
[‘dog’, ‘cat’, ‘bird’]
4. Сгенерируйте нулевую матрицу 2x10
zero_matrix = [[0 for col in range(2)] for row in range(10)]
вывод:
[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
Надеюсь, этот урок будет полезен!