Објашњено разумевање Питхон листе: када их користити, а када не (2026)
Разумевање листе је једна од најнесхваћенијих карактеристика Пајтона. Почетници их избегавају јер „изгледају компликовано“. Посредници их претерано користе све док сваки трећи ред не буде угнежђен у једном реду који нико не може да прочита. Овај водич поправља обе грешке.
Покрићемо: тачан троделни облик који следи свако разумевање листе, референтне вредности у односу на за / мапу / филтер, четири узорка која треба да препознате на видику и чврсто правило када треба престати коришћењем разумевања и уместо тога посегнути за обичном петљом.
Облик: [ шта | извор | филтер ]
Свако разумевање листе састоји се од три дела, овим редоследом:
Читање наглас: "дајте ми `израз` за сваку `ставку` у `итерабле`, али само када је `услов` тачан."
Почните са еквивалентном петљом фор, а затим је скупите:
Исти резултат — „[0, 4, 16, 36, 64]“. Разумевање је један ред, додељује листу унапред (без позива аппенд), а Питхон-ов компајлер бајткода емитује ЛИСТ_АППЕНД — брзу путању која прескаче тражење атрибута на .аппенд.
Референтни показатељ: разумевање вс фор-петље вс мапа+филтер
Прављење листе парних бројева на квадрат од 0 до 100.000:
| Метода | Време (µс) | Релативе |
|---|---|---|
| фор + .аппенд | 4,800 | 1,9× основна линија |
| лист(мапа(..., филтер(...))) | 3,200 | 1,3× основна линија |
| Разумевање листе | 2,500 | 1.0× (најбржи) |
Измерено на Питхон 3.13, једно покретање од 1000 итерација. Разумевање побеђује јер не постоји позив функције по елементу — израз је уметнут.
Речено је: немојте микрооптимизовати. За листу од 100 елемената, сва три се завршавају за мање од 100 µс. Прво изаберите читљивост.
Четири обрасца које треба да препознате
1. Трансформишите сваки елемент
Замена за мапу(стр.наслов, имена), али не захтева преламање лист(...).
2. Филтрирајте без трансформације
Чистији од лист(филтер(ламбда н: н > 0, бројеви)). Није потребна ламбда.
3. Филтрирајте И трансформишите
Овде разумевање јасно надмашује алтернативе — покушајте да то напишете помоћу мапа + филтер и пребројите заграде.
4. Изравнајте угнежђену листу
Редослед је важан: за ред у матрици се чита с лева на десно као еквивалентне угнежђене фор петље. Ово је једини образац где угнежђена разумевања остају читљива — за све дубље је потребна петља.
Када престати са разумевањем
Три строга правила, по важности:
1. Три или више клаузула „за“ → користите петљу. Троструко угнежђено разумевање је нечитљиво чак ни особи која га је написала пре 20 минута.
2. Нежељени ефекти → користите петљу. Разумевања су за састављање листе. Ако позивате функцију због њених нежељених ефеката (писање у датотеку, слање захтева), користите петљу. [принт(к) фор к ин итемс] је мирис кода — правите листу за одбацивање `Ништа.
3. Израз је дужи од 60 знакова → раставите га. Ако треба да размишљате дуже од 3 секунде да бисте га рашчланили, поделите га у именовану функцију или петљу.
Дицт и сет разумевања — исти облик
Иста синтакса, различите заграде:
Разумевање дикта је посебно корисно за инвертовање мапирања ({в: к за к, в у д.итемс()}) или за прављење табеле за тражење са листе.
Генератор израза — рођак прилагођен меморији
Испустите заграде, задржите заграде:
За сум, мин, мак, било који, алл, ", ".јоин(...), и друге функције које се понављају једном, преферирају израз генератора — он чува алокацију средње листе. За све што треба да индексирате или поновите двапут, користите разумевање.
Вежбање: три вежбе
Препишите сваки користећи разумевање листе. Решења су на крају.
1. Дате речи = ["мачка", "слон", "пас", "нилски коњ"], добијте листу речи дужих од 4 знака, све великим словима.
2. Дати подаци = [{"наме": "Алице", "аге": 30}, {"наме": "Боб", "аге": 25}], издвојите листу само имена.
3. Дати парови = [(1, 2), (3, 4), (5, 6)], добијте листу збира сваког пара.
Решења:
Разумевање листе је препознатљива карактеристика Пајтона — знати када треба посегнути за једном (а када је оставити као петљу фор) је поуздан маркер течности средњег нивоа. Вежбајте тако што ћете преписати постојеће фор + .аппенд петље које пронађете у сопственом коду; не треба свако да постане разумевање, али они који би требало да буду очигледни после недељу дана.
Следећи корак: пробајте 5 интерактивних лекција о разумевању листе са правим Питхон-ом који ради у вашем прегледачу и АИ ментором на сваком кораку.