Введение в понимание списков
Python предоставляет конструкции понимания списков, которые позволяют легко определять списки, фильтровать списки, создавать новые списки на основе существующих списков и многое другое. По сравнению с традиционными «циклами for», понимание списков является гораздо более лаконичной и удобочитаемой альтернативой созданию списков в Python. В этом посте мы обсудим, как использовать понимание списков для создания списков в Python. Мы также сравним подход к пониманию списка с использованием традиционных «циклов for» в каждом примере.
Давайте начнем!
Во-первых, давайте рассмотрим задачу создания списка положительных целых чисел от 1 до 10 в «цикле for». Давайте инициализируем список под названием pos_list:
pos_list = []
Мы можем добавлять значения в этот список, перебирая генератор, возвращаемый методом range () в цикле for:
for i in range(1, 11): pos_list.append(i)
Распечатаем получившийся список:
print(pos_list)
Это достаточно просто. Теперь предположим, что мы хотим сгенерировать список четных целых чисел. Мы можем добавить условие, которое проверяет, делится ли элемент на 2, и добавлять его только тогда, когда условие истинно:
even_list = [] for i in range(1, 11): if i%2 == 0: even_list.append(i)
Распечатаем результат:
print(even_list)
В то время как использование цикла for выполняет свою работу, понимание списка обеспечивает более простой способ достижения тех же результатов с меньшим количеством кода. Во-первых, давайте посмотрим, как сгенерировать наш исходный список положительных целых чисел, используя понимание списка:
lc_pos_list = [i for i in range(1,11)] print(lc_pos_list)
Сравните это с тремя исходными строками кода, которые нам пришлось использовать с «for-loop»:
for i in range(1, 11): pos_list.append(i) print(pos_list)
Давайте теперь воспользуемся пониманием списка, чтобы создать четный список:
lc_even_list = [i for i in range(1,11) if i%2] print(lc_even_list)
Тем не менее, здесь используются только две строки кода по сравнению с пятью строками кода, использующими циклы for:
even_list = [] for i in range(1, 11): if i%2 == 0: even_list.append(i) print(even_list)
Мы также можем довольно легко фильтровать списки, используя понимание списков. Давайте рассмотрим задачу фильтрации значений меньше пяти из нашего списка положительных целых чисел с помощью цикла for:
pos_list_gt_5 = [] for i in pos_list: if i >= 5: pos_list_gt_5.append(i) print(pos_list_gt_5)
И используя понимание списка:
lc_pos_list_gt_5 = [i for i in pos_list if i >= 5] print(lc_pos_list_gt_5)
Как видите, мы использовали гораздо меньше кода. Затем давайте рассмотрим задачу перебора нескольких списков с использованием их понимания. Предположим, у нас есть список целых чисел от 1 до 10 и еще один список целых чисел от 20 до 30:
pos_list2 = [] for i in range(20, 30): pos_list2.append(i) print(pos_list) print(pos_list2)
Давайте напишем цикл for, выполняющий итерацию по обоим спискам, и добавим результат их элементов в новый список:
multiply_list = [] for i, j in zip(pos_list, pos_list2): multiply_list.append(i*j) print(multiply_list)
Мы можем выполнить ту же операцию, используя понимание списка:
lc_multiply_list = [i*j for i,j in zip(pos_list, pos_list2)] print(lc_multiply_list)
Мы даже можем применить условия. Добавим произведение элементов, произведение которых меньше 200:
lc_multiply_list_filter = [i*j for i,j in zip(pos_list, pos_list2) if i*j < 200] print(lc_multiply_list_filter)
Я остановлюсь на этом, но я призываю вас поиграть с кодом самостоятельно.
ВЫВОДЫ
Подводя итог, в этом посте мы обсудим, как создавать списки, используя понимание списков в python. Мы показали, что, хотя мы можем выполнять те же задачи, используя циклы for, понимание списков обеспечивает гораздо более простой и читаемый способ построения списков. Я надеюсь, вы нашли этот пост полезным / интересным. Код в этом посте доступен на GitHub. Спасибо за чтение!