«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Понимание списков в Python

Понимание списков в Python

Опубликовано 27 августа 2024 г.
Просматривать:819

Understanding List Comprehensions in Python

Списки — мощный и эффективный метод создания списков в Python.

Они предлагают краткий и удобочитаемый способ создания списков на основе существующих итераций.

В статье я рассмотрю нюансы понимания списков, их преимущества перед традиционными циклами и различные практические применения.


Что такое списки?

Понимание списков — это синтаксически компактный способ создания списков путем объединения циклов и условной логики в одну строку кода.

Это приводит к более читабельному и выразительному способу создания списков, что упрощает понимание цели кода с первого взгляда.


Структура и примеры

Базовая структура понимания списка следующая:

[expression for item in iterable if condition]

Давайте разберем компоненты этой структуры:

  • выражение: это значение, которое будет добавляться в новый список для каждой итерации.
  • для элемента в итерируемом объекте: это конструкция цикла, которая перебирает каждый элемент в итерируемом объекте (например, список, кортеж, набор, словарь или генератор).
  • if условие: это необязательный условный оператор, который фильтрует элементы для включения в новый список.

Примеры:

Основное понимание списка:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

В этом примере используется понимание списка для создания нового списка квадратов из существующего списка чисел.

Понимание списка с условием:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

В этом примере числа фильтруются, чтобы включать только четные числа, которые затем возводятся в квадрат, демонстрируя использование условия if в понимании списка.


Преимущества списков по сравнению с традиционными циклами

Понимание списков имеет ряд преимуществ перед традиционными циклами:

  • Краткость: понимание списков более лаконично и их легче читать, чем традиционные циклы, что делает ваш код более удобным в сопровождении и понятным.
  • Производительность: понимание списков часто выполняется быстрее, чем традиционные циклы, поскольку они оптимизированы для создания списков.
  • Читаемость: Цель понимания списка более ясна, чем у традиционного цикла, что упрощает понимание вашего кода другими.

Практическое применение

Списки можно использовать различными способами для манипулирования и обработки данных.

Вот несколько распространенных случаев использования:
Списки фильтров:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) 



В этом примере фильтруется список слов, включающий только те, которые состоят из 5 или менее символов.

Преобразование списков:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5)   32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

В этом примере преобразуется список температур из Цельсия в Фаренгейт.

Понимание вложенных списков:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

В этом примере двумерный список (матрица) преобразуется в одномерный список с использованием вложенных списков.

Создание списков кортежей:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

В этом примере создается список всех возможных пар (кортежей) чисел из двух диапазонов.

Удаление дубликатов:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

В этом примере дубликаты удаляются из списка путем преобразования его в набор и обратно в список.


Более сложные темы

Теперь давайте рассмотрим более сложные темы, касающиеся вариантов понимания списков.

Выражения-генераторы
Выражения-генераторы аналогичны генераторам списков, но вместо списка генерируют итерацию.

Это может быть более эффективно с точки зрения использования памяти при работе с большими наборами данных, поскольку элементы генерируются на лету, а не сохраняются в памяти все сразу.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

Словарь и понимание множеств
Python также поддерживает генераторы словарей и наборов, которые позволяют создавать словари и наборы в сжатой форме, аналогично генераторам списков.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


Заключение

Понимание списков — это мощный и универсальный инструмент Python, который позволяет создавать списки в краткой и удобочитаемой форме.

Они могут упростить ваш код, повысить производительность и упростить манипулирование и обработку данных.

Освоив работу со списками и их расширенные функции, вы сможете писать более эффективный и понятный код Python.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/devasservice/understanding-list-comprehensions-in-python-1b2p?1. В случае нарушения авторских прав свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3