Python

Список розумінь на Python

Список розумінь на Python
Розуміння списків часто використовується в Python для написання однорядкових операторів, які створюють новий список або словник, перебираючи цитований об'єкт. У цій статті буде пояснено, як використовувати розуміння списків на Python, починаючи з основного пояснення того, як цикли роботи в Python працюють.

Для циклу в Python

Оператор for у Python послідовно перебирає члени будь-якого об'єкта, списку, рядка тощо. Порівняно з іншими мовами програмування, його синтаксис набагато чіткіший і не вимагає ручного визначення кроків ітерації та запуску ітерації. Хоча існують способи зробити його поведінку такою ж, як інші мови програмування (ця стаття не розгляне). Ви також можете здійснити певний контроль над циклами, використовуючи оператори типу continue, break, pass тощо. Нижче наведено простий приклад циклу for у Python:

для x в діапазоні (10):
друк (x)

У циклі for вище буде надруковано десять чисел, починаючи від 0 і закінчуючи 9.

Розуміння списку

Розуміння списку - це не що інше, як скорочений / стислий спосіб написання багаторядкового циклу в однорядковий оператор. Наведений нижче приклад розуміння списку створить новий список як [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], включивши до нього всі значення “x”.

числа = [x для x в діапазоні (10)]
друк (цифри)

Зверніть увагу, що розуміння списку завжди створює новий список і не змінює оригінальні ітерації, що використовуються у виразі. Типовий вираз для розуміння списку повинен містити речення "for" і може супроводжуватися умовними операторами "if" та "else". Без використання розуміння списку, наведений вище приклад буде написаний таким чином:

числа = []
для x в діапазоні (10):
числа.додати (x)
друк (цифри)

Продуктивність та читабельність

Розуміння списку відбувається швидше, ніж для циклів. Однак, якщо ви не повторите сотні тисяч елементів, ви не помітите значних покращень продуктивності. Хоча розуміння списку забезпечує стислий спосіб написання циклів, складні вирази можуть призвести до поганої читабельності коду та підвищеної деталізації. Важливо тримати код читабельним, якщо тільки досягнення максимальної продуктивності не є абсолютною необхідністю для вашої програми.

Приклад: Використання синтаксису розуміння списку зі словниками та наборами

Словник python - це колекція елементів, визначених у парах ключ-значення, тоді як набір - це колекція унікальних значень, де дублікати заборонені. Розуміння списків також можна використовувати зі словниками та наборами Python. Синтаксис дещо відрізняється, замість того, щоб загортати вираз у квадратні дужки, тепер вам доведеться використовувати фігурні дужки. Ви також отримаєте новий об’єкт словника / набору замість нового списку.

data = "city": "new york", "name": "john doe"
formatted_data = k: v.title () для k, v в даних.елементи ()
друк (formatted_data)

У наведеному вище прикладі буде перетворено значення рядків у регістр заголовка та створено новий словник з назвою “formatted_data”, вихідний результат якого буде: 'city': 'New York', 'name': 'John Doe'. Ви також можете змінити словник / встановити на місці, вказавши існуючу змінну словника зліва.

data = "city": "new york", "name": "john doe"
дані = k: v.title () для k, v в даних.елементи ()
друк (дані)

Без використання розуміння словника код мав би виглядати так:

data = "city": "new york", "name": "john doe"
formatted_data =
для k, v у даних.позиції ():
formatted_data [k] = v.заголовок ()
друк (formatted_data)

Оскільки в наборах немає пар ключ-значення, розуміння набору можна визначити так само, як розуміння списку. Єдина відмінність - використання фігурних брекетів.

Приклад: Кілька циклів для розуміння списку

Згаданий вище приклад розуміння списку є базовим і використовує єдине твердження "for". Нижче наведено приклад, який використовує множину для циклів та умовний оператор "якщо".

прикметники = ["Disco", "Eoan", "Focal", "Artful"]
тварини = ["Дінго", "Горностай", "Фосса", "Бобер"]
кодові імена = [x + "" + y для x у прикметниках для y у тварин, якщо y.починаєтьсяз (x [0])]
друк (кодові імена)

Код буде відображати ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] як вихідні дані. Два цикли for перебирають списки «прикметників» та «тварин», а їх члени об’єднуються за допомогою пробілу, лише якщо перша буква обох слів однакова. Без використання розуміння списку код мав би виглядати так:

прикметники = ["Disco", "Eoan", "Focal", "Artful"]
тварини = ["Дінго", "Горностай", "Фосса", "Бобер"]
кодові імена = []
для х у прикметниках:
для y у тварин:
якщо y.починається з (x [0]):
кодові імена.додати (x + "" + y)
друк (кодові імена)

Приклад: Розуміння списку за умови пропозиції if-else

Наведений нижче приклад покаже використання операторів if та else у розумінні списку.

number_list = [1, 2, 3, 4]
інший_ список = [5, 6, 7, 8]
result = [True if (x + y)% 2 == 0 else False for x in number_list for y in another_list]
друк (результат)

Переглядаючи два списки, вищезрозуміле розуміння списку перевіряє, чи сума пари елементів є парною чи ні. Запуск коду вище покаже вам [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] як вихідні дані. Без використання розуміння списку код мав би виглядати так:

number_list = [1, 2, 3, 4]
інший_ список = [5, 6, 7, 8]
результат = []
для x у списку номерів:
для y в іншому_списку:
якщо (x + y)% 2 == 0:
результат.додати (True)
ще:
результат.додати (помилково)
друк (результат)

Висновок

Розуміння списків забезпечує приємний спосіб писати чіткі та стислі твердження про цикли. Однак вони можуть швидко отримати складні та важкі для розуміння умови використання кількох циклів та умовних операторів. Врешті-решт, справа доходить до рівня комфорту програміста, але, як правило, це гарна ідея писати явний, читабельний і простий для налагодження код, а не надто використовувати скорочені фрази.

Як розробити гру на Linux
Десять років тому не так багато користувачів Linux передбачали, що їх улюблена операційна система колись стане популярною ігровою платформою для комер...
Open Source Ports of Commercial Game Engines
Free, open source and cross-platform game engine recreations can be used to play old as well as some of the fairly recent game titles. This article wi...
Кращі ігри командного рядка для Linux
Командний рядок - це не просто ваш найбільший союзник при використанні Linux, він також може бути джерелом розваг, оскільки ви можете використовувати ...