Разбиране на списък в Python – с примери

В Python разбирането на списъци ви помага да създавате нови списъци от съществуващи итерируеми елементи, като списъци, низове и кортежи.

Техният кратък синтаксис ви позволява да създавате нови списъци само с един ред код. И този урок ще ви научи как можете да направите това.

През следващите няколко минути ще научите:

  • Как да създадете нов списък с помощта на цикли for,
  • Синтаксисът за използване на разбиране на списъци в Python и
  • Как да промените разбирането на списъка с условен оператор if.

Освен това ще кодирате няколко примера, които ще ви помогнат да разберете по-добре разбирането на списъци.

Нека се потопим.🌊

Как да създадете списъци на Python с помощта на цикли for

Да предположим, че имате списък с брой числа nums. И бихте искали да създадете друг списък, който съдържа куба на всички числа в nums. Ето как ще го направите с помощта на for цикъл в Python:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

В горния код имаме следните стъпки:

  • Инициализирайте празен списък num_cubes.
  • Прегледайте списъка с числа.
  • Осъществете достъп до всяко число num и изчислете неговия куб, като използвате оператора за степенуване: num**3.
  • Накрая добавете кубираната стойност към списъка num_cubes

Забележка: В Python операторът за степенуване ** се използва със синтаксиса: num**pow—числото num се повишава до степен pow.

Можете обаче да направите това по-лесно, като използвате разбиране на списък в Python. Нека продължим да изучаваме неговия синтаксис.

Синтаксис за разбиране на списък на Python

Общият синтаксис за разбиране на списъка е показан по-долу.

<new_list> = [<expression> for <item> in <iterable>]

Нека анализираме горния синтаксис.

  • В Python списъците са разделени с двойка квадратни скоби []— следователно трябва да приложите изявлението за разбиране на списъка вътре [].
  • в означава, че преминавате през итерируем. Всеки обект на Python, който можете да преминете през цикъл и да получите достъп до отделни елементи – като списъци, кортежи и низове, са итерируеми.
  • е изходът, който искате да изчислите за всеки в .

И това звучи просто, нали?

По същество бихте искали да направите нещо за всички елементи в списъка (или всеки итерируем), за да получите нов списък.

Използвайки това, можем да опростим синтаксиса, както е показано на изображението по-долу.

Синтаксис за разбиране на списък на Python (Изображение от автор)

Сега, след като научихте синтаксиса, е време да започнете да кодирате. Можете да използвате онлайн Python IDE на pctechbg.net, за да следвате тези примери. Или можете да ги стартирате на вашата локална машина.

Примери за разбиране на списък на Python

В предишния раздел създадохте нов списък num_cubes от nums. Нека започнем, като пренапишем това с помощта на разбиране на списък.

Използване на списък с разбиране с числа

Сега нека използваме опростения синтаксис, както следва:

  • <направете това>: Тук трябва да кубирате всяко число. Затова заменете с num**3.
  • : Цикличната променлива е num—индивидуалните числа в списъка.
  • : Съществуващият списък, който имаме, е nums.
  • И [num**3 for num in nums] е крайният израз. ✅

Събирайки всичко заедно, имаме следния кодов фрагмент:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Поздравления, вие кодирахте първото си разбиране на списък.🎉

Продължаваме, нека работим с низовете на Python.

Използване на разбиране на списък с низове

Да предположим, че имате списъка с автори — можете да пренапишете списъка по-долу с любимите си автори.😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Забележете как имената на авторите са изписани с малки букви в горния списък. Сега бихме искали да ги форматираме в главни букви и да ги съхраним в нов списък, наречен author_list.

Забележка: В Python, низовият метод заглавие() приема низ като аргумент и връща копие на низа, форматиран в главни букви. Тоест, първата буква на всяка дума е главна: Име Фамилия

Ето всичко, което трябва да направите:

  • преминете през списъка с автори и за всеки автор в списъка,
  • извикайте author.title(), за да получите копие на низа с малки и главни букви.

И кодът на Python за това е показан по-долу:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

В горния изход вижте как имената на всички автори са форматирани в главни букви – което искахме.

Използване на разбиране на списък с множество списъци

Досега научихте как да използвате разбирането на списъци, за да създавате нови списъци от един съществуващ списък. Сега нека научим как да създадем нов списък от няколко списъка.

Например, разгледайте този проблем: Имате два списъка l_arr и b_arr, съдържащи дължините и ширините на 4 правоъгълника.

И трябва да създадете нова област от списък, която включва площта на тези 4 правоъгълника. Запомнете, площ = дължина * ширина.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Ще ви трябват елементи от двата списъка (l_arr и b_arr), за да изчислите площта. И можете да го направите с помощта на функцията zip() на Python.

Забележка: В Python функцията zip() приема един или повече iterables като аргументи със синтаксиса zip(*iterables). След това връща итератор от кортежи, където кортежът i съдържа елемента i от всеки от итерируемите.

Следното изображение описва това подробно. Имате 4 стойности в l_arr и b_arr, така че диапазонът от индекси е от 0 до 3. Както можете да видите, кортежът 0 съдържа l_arr[0] и b_arr[0]кортеж 1 съдържа l_arr[1] и b_arr[1]и така нататък.

Функция zip() на Python (Изображение от автор)

Следователно можете да преминете през zip(l_arr,b_arr), както е показано по-долу:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

В следващия раздел ще научите как да използвате условни изрази в разбирането на списък.

Разбиране на списък на Python със синтаксис на условие

Нека започнем с надграждане на предишния синтаксис за разбиране на списъка.

Ето синтаксиса:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

Вместо да изчислявате <израза> за всички елементи, бихте искали да го направите само за онези елементи, които отговарят на конкретно <условие>—където условие := True. И това води до опростен синтаксис, както е показано:

Python List Comprehension with Condition Syntax (Изображение от автор)

▶ С това нека да продължим към примерите за код.

Разбиране на списък на Python с примери за условия

#1. Даден ви е низът „Уча Python през 2022 г.“. Бихте искали да получите списък с всички цифри в този низ. Е, как го правиш?

В Python .isdigit() действа върху знак и връща True, ако е цифра (0-9); в противен случай връща False.

Кодовият фрагмент по-долу показва как можете да съберете списъка с всички цифри в низа str1.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

В горния код:

  • преминавате през низа str1,
  • достъп до всеки символ, за да проверите дали е цифра, като използвате метода isdigit() и
  • добавете char към новите цифри в списъка само ако е цифра.

Да вземем друг пример.

#2. Имате списък с плодове.🍊 И бихте искали да създадете списък starts_with_b, който съдържа всички плодове от списъка с плодове, които започват с b. Можете да използвате метода startswith(), за да напишете условието.

.startswith(‘char’) връща True, ако започва с ‘char’; в противен случай връща False.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

В резултата по-горе получаваме „боровинки“ и „банан“, които са двата плода, които започват с „b“ в списъка с плодове, както очаквахме.

И това приключва нашата дискусия относно разбирането на списъка.

Заключение

Надявам се, че този урок ви е помогнал да разберете разбирането на списъци в Python.

Нека обобщим:

  • Можеш да използваш [<do this> for <all-items> in <this-list>] за създаване на нов списък с помощта на разбиране на списък.
  • Освен това можете да използвате синтаксиса [<do this> for <all-items> in <this-list> if <condition-is-True>] с условния оператор if.

Освен това вие също сте кодирали няколко примера. Като следваща стъпка можете да опитате да пренапишете някои от вашите съществуващи цикли на Python за създаване на списък с помощта на разбиране на списък. Приятно кодиране! До следващия урок.😄

Сега можете да разгледате как да конвертирате списък в речник или да научите как да работите с файлове в Python.

  Избор на евтина услуга за проверка на фона и защо БЕЗПЛАТНО не е опция