Înțelegerea listei
Înțelegerile listelor sau abstracțiile listelor sunt structuri sintactice care descriu modul în care listele existente sau alte obiecte iterabile sunt procesate pentru a crea liste noi din acestea.
Sunt scrise în unele limbaje de programare, cum ar fi B. Python , Haskell sau Common Lisp acceptate și în analogie cu notația descriptivă a setului ( notația engleză Set-builder ).
Asemănări cu notația mulțimilor
Setul de numere pătrate cu baze pare între 10 și 20 poate fi notat folosind notația descriptivă a setului după cum urmează
.
În Haskell, o listă de înțelegere care îndeplinește aceleași condiții arată astfel:
m = [x^2 | x <-[10..20], mod x 2 == 0)]
Trebuie remarcat faptul că specificația [10..20] implicit indică faptul că un set de numere naturale se află în setul de intrare.
Următoarea notație este utilizată în Python
m = [x**2 for x in range(10,21) if x%2 == 0]
Aproape același lucru se aplică aici ca și în cazul lui Haskell, doar că atunci când clasa intervalului este inițializată, trebuie adăugat 1 pentru limita superioară.
Toate cele trei notații pot fi împărțite în patru părți:
- Expresia de ieșire (expresia de ieșire ): x ^ 2
- Variabilă: x
- Set de intrări : numerele naturale N
- Predicat / proprietate ( predicat ): numerele pare ale setului de intrare
Câmpuri multidimensionale
Unele limbaje de programare precum Python sau Haskell nu au suport nativ pentru câmpuri multidimensionale. Într-un astfel de caz, puteți utiliza List Comprehensions pentru a crea un design de înlocuire.
Acest exemplu creează o construcție goală de înlocuire a matricei 5x5 cu liste:
m = [[None for zeile in range(5)] for spaltenNr in range(5)] # Erstellung
m[1][4] = 4 # Element in Zeile 2, Spalte 5 mit dem Wert 4 belegen
Expresia de ieșire este, de asemenea, o înțelegere a listei. Deci este o chestiune de cuibărit.
Înțelegerea Listă interioară creează un rând de cinci elemente cu valoarea nulă, None iar Înțelegerea Listă exterioară asigură apoi că o listă cu cinci rânduri este creată necondiționat (fără un predicat). Accesul funcționează apoi ca un câmp multidimensional normal.