Î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.

Dovezi individuale

  1. Tutorial Python: Înțelegerea listei
  2. încorporat Tipuri - Python 3.7.1 documentație