Python

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

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

За Loop в Python

Изявлението за цикъл for в Python последователно итерира членове на всеки обект, списък, низ и т.н. В сравнение с други езици за програмиране, неговият синтаксис е много по-изчистен и не изисква ръчно дефиниране на стъпки от итерация и стартиране на итерация. Въпреки че има начини да направим поведението му същото като другите езици за програмиране (няма да бъде разгледано в тази статия). Можете също така да упражнявате някакъв контрол върху цикли, като използвате изрази като продължаване, прекъсване, предаване и т.н. По-долу е прост пример за for цикъл в Python:

за х в обхват (10):
печат (x)

Цикълът for по-горе ще отпечата десет числа, започващи от 0 и завършващи на 9.

Разбиране на списъка

Разбирането на списъци не е нищо друго, освен стенографичен / кратък начин за писане на многоредови линии за цикли в еднолинеен оператор. Примерът за разбиране на списъка по-долу ще създаде нов списък като [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], като включи всички стойности на „x“ в него.

числа = [x за x в обхват (10)]
печат (цифри)

Имайте предвид, че разбирането на списъка винаги създава нов списък и не променя оригиналните итерации, използвани в израза. Типичният израз за разбиране на списъка трябва да има клауза „за“ и може да бъде последван от условни изрази „ако“ и „иначе“. Без да се използва разбиране на списък, горният пример ще бъде написан по следния начин:

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

Производителност и четливост

Разбирането на списъците е по-бързо, отколкото при цикли. Ако обаче не повторите стотици хиляди елементи, няма да забележите значителни подобрения в производителността. Докато разбирането на списъка осигурява кратък начин за писане на цикли, сложните изрази могат да доведат до лоша четливост на кода и повишена многословност. Важно е кодът да се чете, освен ако постигането на максимална производителност не е абсолютна необходимост за вашата програма.

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

Речникът на python е колекция от елементи, дефинирани в двойки ключ-стойност, докато наборът е колекция от уникални стойности, където дублиращите се не са разрешени. Разбиранията на списъци могат да се използват и с речници и набори на Python. Синтаксисът се различава леко, вместо да увивате израза в квадратни скоби, сега ще трябва да използвате фигурни скоби. Освен това ще получите нов обект на речник / набор вместо нов списък.

данни = "city": "new york", "name": "john doe"
formatted_data = k: v.заглавие () за k, v в данни.елементи ()
печат (форматирани_данни)

Примерът по-горе ще преобразува низови стойности в заглавие и ще създаде нов речник, наречен „formatted_data“, чийто изход ще бъде: 'city': 'New York', 'name': 'John Doe'. Можете също да промените речника / да зададете на място, като посочите съществуващата променлива в речника отляво.

данни = "city": "new york", "name": "john doe"
данни = k: v.заглавие () за k, v в данни.елементи ()
печат (данни)

Без да се използва разбиране на речника, кодът ще изглежда така:

данни = "city": "new york", "name": "john doe"
formatted_data =
за k, v в данни.елементи ():
formatted_data [k] = v.заглавие()
печат (форматирани_данни)

Тъй като в двойки няма двойки ключ-стойност, разбирането на набор може да бъде дефинирано по същия начин като разбирането на списък. Единствената разлика е използването на къдрави скоби.

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

Примерът за разбиране на списъка, споменат по-горе, е основен и използва единствен израз „за“. По-долу е даден пример, който използва множество за цикли и условен оператор „ако“.

прилагателни = ["Disco", "Eoan", "Focal", "Artful"]
животни = ["Dingo", "Hermine", "Fossa", "Beaver"]
кодови имена = [x + "" + y за x в прилагателни за y при животни, ако y.започва с (x [0])]
печат (кодови имена)

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

прилагателни = ["Disco", "Eoan", "Focal", "Artful"]
животни = ["Dingo", "Hermine", "Fossa", "Beaver"]
кодови имена = []
за х в прилагателни:
за y при животни:
ако y.започва с (x [0]):
кодови имена.добавяне (x + "" + y)
печат (кодови имена)

Пример: Разбиране на списък с клауза if-else

Примерът по-долу ще покаже използването на операторите if и else в разбирането на списъка.

номер_списък = [1, 2, 3, 4]
друг_ списък = [5, 6, 7, 8]
резултат = [Вярно, ако (x + y)% 2 == 0 else False за x в номер_в списък за y в друг_ списък]
печат (резултат)

Докато обикаля два списъка, разбирането на списъка по-горе проверява дали сумата от двойката елементи е четна или не. Изпълнението на горния код ще ви покаже [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] като изход. Без да се използва разбирането на списъка, кодът ще изглежда така:

номер_списък = [1, 2, 3, 4]
друг_ списък = [5, 6, 7, 8]
резултат = []
за x в списък с номера:
за y в друг_ списък:
ако (x + y)% 2 == 0:
резултат.добавяне (Вярно)
друго:
резултат.добавяне (невярно)
печат (резултат)

Заключение

Разбиранията на списъците предоставят приятен начин за писане на чисти и кратки отчети. Те обаче могат бързо да станат сложни и трудни за разбиране, ако се използват множество цикли и условни изрази. В крайна сметка се стига до нивото на комфорт на програмист, но като цяло е добра идея да пишете явен, четим и лесен за отстраняване на грешки код, вместо да използвате прекомерно стенографии.

OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...
Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...