За 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:
резултат.добавяне (Вярно)
друго:
резултат.добавяне (невярно)
печат (резултат)
Заключение
Разбиранията на списъците предоставят приятен начин за писане на чисти и кратки отчети. Те обаче могат бързо да станат сложни и трудни за разбиране, ако се използват множество цикли и условни изрази. В крайна сметка се стига до нивото на комфорт на програмист, но като цяло е добра идея да пишете явен, четим и лесен за отстраняване на грешки код, вместо да използвате прекомерно стенографии.