Listele din Python sunt similare cu matricile din JavaScript. Acestea sunt unul dintre tipurile de date încorporate în Python utilizate pentru stocarea colecțiilor de date.

Utilizare de bază

Cum se creează o listă

Un gol list este creat folosind o pereche de paranteze drepte:

>>> empty_list = []
>>> type(empty_list)
<class 'list'>
>>> len(empty_list)
0

A list poate fi creat cu elemente prin încadrarea unei liste separate de virgule a elementelor cu paranteze drepte. Listele permit ca elementele să fie de diferite tipuri (eterogene), dar sunt cel mai frecvent de un singur tip (omogene):

>>> homogeneous_list = [1, 1, 2, 3, 5, 8]
>>> type(homogeneous_list)
<class 'list'>
>>> print(homogeneous_list)
[1, 1, 2, 3, 5, 8]
>>> len(homogeneous_list)
6
>>> heterogeneous_list = [1, "Hello Campers!"]
>>> print(heterogeneous_list)
[1, "Hello Campers!"]
>>> len(heterogeneous_list)
2

list constructorul poate fi folosit și pentru a crea un list:

>>> empty_list = list()                            # Creates an empty list
>>> print(empty_list)
[]
>>> list_from_iterable = list("Hello campers!")    # Creates a list from an iterable.
>>> print(list_from_iterable)
['H', 'e', 'l', 'l', 'o', ' ', 'c', 'a', 'm', 'p', 'e', 'r', 's', '!']

De asemenea, puteți utiliza Înțelegerea listelor pentru a crea liste, pe care le vom acoperi mai târziu în articol.

ad-banner

Accesați elementele dintr-o listă

>>> my_list = [1, 2, 9, 16, 25]
>>> print(my_list)
[1, 2, 9, 16, 25]

Zero indexat

>>> my_list[0]
1
>>> my_list[1]
2
>>> my_list[2]
9

Încheiați indexarea

>>> my_list[-1]
25
>>> my_list[-2]
16

Despachetarea listelor pentru python-3

>>> print(*my_list)
1 2 9 16 25

Listele sunt modificabile

lists sunt containere mutabile. Containerele mutabile sunt containere care permit modificarea obiectelor care sunt conținute de container.

Elemente dintr-un list pot fi extrase și rearanjate folosind altul list ca index.

>>> my_list = [1, 2, 9, 16, 25, 34, 53, 21]
>>> my_index = [5, 2, 0]
>>> my_new_list = [my_list[i] for i in my_index]
>>> print(my_new_list)
[34, 9, 1]

Metode de listare

len()

len() metoda returnează lungimea unui obiect, fie că este vorba de o listă, un șir, un tuplu sau un dicționar.

len() acceptă un argument, care poate fi o secvență (cum ar fi un șir, octeți, tupluri, liste sau intervale) sau o colecție (cum ar fi un dicționar, un set sau un set înghețat).

list1 = [123, 'xyz', 'zara'] # list
print(len(list1)) # prints 3 as there are 3 elements in the list1

str1 = 'basketball' # string
print(len(str1)) # prints 10 as the str1 is made of 10 characters

tuple1 = (2, 3, 4, 5) # tuple 
print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1

dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary
print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

index()

index() returnează prima apariție / index a elementului din listă dat ca argument funcției.

numbers = [1, 2, 2, 3, 9, 5, 6, 10]
words = ["I", "love", "Python", "I", "love"]

print(numbers.index(9)) # 4
print(numbers.index(2)) # 1
print(words.index("I")) # 0
print(words.index("am")) # returns a ValueError as 'am' is not in the `words` list

Aici primul rezultat este foarte evident, dar al doilea și al treilea ar putea părea confuz la început. Dar amintește-ți index() returnează prima apariție a elementului și, prin urmare, în acest caz 1 și 0 sunt indicii unde 2 și "I" apar mai întâi în liste respectiv.

De asemenea, dacă un element nu este găsit în listă, a ValueError este returnat ca în cazul indexării "am" în words listă.

Argumente opționale

De asemenea, puteți utiliza argumente opționale pentru a vă limita căutarea la o anumită subsecvență a listei:

words = ["I", "am", "a", "I", "am", "Pythonista"]

print(words.index("am", 2, 5)) # 4

Deși elementul este căutat între indicii 2 (inclusiv) și 5 (neinclus), indexul returnat este calculat în raport cu începutul listei complete, mai degrabă decât cu argumentul start.

pop()

pop() metoda elimină și returnează ultimul element dintr-o listă.

Există un parametru opțional, care este indexul elementului care trebuie eliminat din listă. Dacă nu este specificat niciun index, pop() elimină și returnează ultimul element din listă.

Dacă indexul a trecut la pop() metoda nu se află în raza de acțiune, aruncă IndexError: pop index out of range excepție.

cities = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco'];

print "City popped is: ", cities.pop() # City popped is: San Francisco
print "City at index 2 is  : ", cities.pop(2) # City at index 2 is: San Antonio

Funcționalitatea de bază a stivei

pop() metoda este adesea utilizată împreună cu append() pentru a implementa funcționalitatea de bază a stivei într-o aplicație Python:

stack = []

for i in range(5):
    stack.append(i)

while len(stack):
    print(stack.pop())

Înțelegerea listei

Înțelegerea listei este un mod de a parcurge o listă pentru a produce o nouă listă pe baza unor condiții. La început poate fi confuz, dar odată ce te-ai acomodat cu sintaxa, este foarte puternic și rapid.

Primul pas în învățarea modului de utilizare a înțelegerii listei este de a privi modul tradițional de a parcurge o listă. Următorul este un exemplu simplu care returnează o nouă listă de numere pare.

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# Empty list that will be populate with a loop
even_list = []

for number in some_list:
  if number % 2 == 0:
    even_list.append(number)

# even_list now equals [2, 8, 10]

Mai întâi se creează o listă cu câteva numere. Apoi creați o listă goală care vă va reține rezultatele din buclă. În buclă verificați dacă fiecare număr este divizibil cu 2 și dacă da, îl adăugați even_list. Acest lucru a luat 5 linii de cod, fără a include comentarii și spațiu alb, care nu este prea mult în acest exemplu.

Acum, pentru exemplul de înțelegere a listei.

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# List Comprehension
even_list = [number for number in some_list if number % 2 == 0]

# even_list now equals [2, 8, 10]

Un alt exemplu, cu aceiași doi pași: Următorul va crea o listă de numere care corespund numerelor din my_starting_list înmulțit cu 7.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_new_list = []

for item in my_starting_list:
my_new_list.append(item * 7)

Când se execută acest cod, valoarea finală a my_new_list este: [7, 14, 21, 28, 35, 42, 49, 56]

Un dezvoltator care utilizează înțelegerea listei ar putea obține același rezultat folosind următoarea înțelegere a listei, care are ca rezultat același lucru my_new_list.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]

my_new_list = [item * 7 for item in my_starting_list]

O formulă simplă pentru a scrie într-un mod de înțelegere a listei este:

my_list = [{operation with input n} for n in {python iterable}]

A inlocui {operation with input n} cu totuși doriți să schimbați elementul returnat din iterabil. Exemplul de mai sus folosește n * 7 dar operația poate fi la fel de simplă sau complexă pe cât este necesar.

A inlocui {python iterable} cu orice iterabil. Tipurile de secvențe vor fi cele mai frecvente. O listă a fost utilizată în exemplul de mai sus, dar tuplurile și intervalele sunt, de asemenea, comune.

Înțelegerea listei adaugă un element dintr-o listă existentă la o listă nouă dacă este îndeplinită o condiție. Este mai îngrijit, dar este, de asemenea, mult mai rapid în majoritatea cazurilor. În unele cazuri, înțelegerea listei poate împiedica lizibilitatea, astfel încât dezvoltatorul trebuie să cântărească opțiunile atunci când alege să utilizeze înțelegerea listei.

Exemple de înțelegere a listei cu condiționali

Fluxul de control în înțelegerile listei poate fi controlat folosind condiționali. De exemplu:

only_even_list = [i for i in range(13) if i%2==0]

Aceasta este echivalentă cu următoarea buclă:

only_even_list = list()
for i in range(13):
  if i%2 == 0:
    only_even_list.append(i)

Înțelegerea listei poate conține, de asemenea, condiții imbricate. Luați în considerare următoarea buclă:

divisible = list()
for i in range(50):
  if i%2 == 0:
    if i%3 == 0:
      divisible.append(i)

Folosind înțelegerea listei, aceasta poate fi scrisă ca:

divisible = [i for i in range(50) if i%2==0 if i%3==0]

Instrucțiunea If-Else poate fi de asemenea utilizată împreună cu înțelegerea listei.

list_1 = [i if i%2==0 else i*-1 for i in range(10)]

Mai multe informatii:

  • Cele mai bune exemple de cod Python