Pythoni loendi mõistmine (koos näidetega)

Selles artiklis õpime Pythoni loendi mõistmist ja selle kasutamist.

Loetlege Pythonis mõistmine vs silmuseks

Oletame, et tahame eraldada sõna humantähed ja lisada tähed loendi üksusteks. Esimene asi, mis meelde tuleb, on loopi kasutamine.

Näide 1: Iteratsioon läbi stringi Kasutamine silmuseks

 h_letters = () for letter in 'human': h_letters.append(letter) print(h_letters)

Programmi käivitamisel on väljund:

 ('h', 'u', 'm', 'a', 'n')

Pythonil on siiski lihtsam viis selle probleemi lahendamiseks, kasutades loendi mõistmist. Loendi mõistmine on elegantne viis olemasolevate loendite põhjal loendite määratlemiseks ja loomiseks.

Vaatame, kuidas ülaltoodud programmi saab loendi mõistete abil kirjutada.

Näide 2: kordamine stringi kaudu, kasutades loendi mõistmist

 h_letters = ( letter for letter in 'human' ) print( h_letters)

Programmi käivitamisel on väljund:

 ('h', 'u', 'm', 'a', 'n')

Ülalolevas näites määratakse muutujale h_letters uus loend ja loend sisaldab korduva stringi 'human' üksusi. print()Väljundi vastuvõtmiseks kutsume funktsiooni.

Loendi mõistmise süntaks

 (loendi üksuse avaldis)

Nüüd saame tuvastada, kus loendi mõistmist kasutatakse.

Kui märkasite, humanon see string, mitte loend. See on loendi mõistmise jõud. See suudab tuvastada, kui ta saab stringi või dupleksi, ja töötab sellega nagu loend.

Seda saate teha silmuste abil. Kuid mitte iga silmus ei saa loendi mõistmiseks ümber kirjutada. Kuid kui loendi mõistmine õpib ja tunneb end mugavalt, siis leiad end üha enam silmi selle elegantse süntaksiga asendamas.

Loetlege arusaamad vs Lambda funktsioonid

Loendite mõistmine pole ainus viis loenditega töötamiseks. Erinevad sisseehitatud funktsioonid ja lambda funktsioonid võimaldavad loendeid luua ja muuta vähemate koodiridadega.

Näide 3: Lambda funktsioonide kasutamine loendis

 letters = list(map(lambda x: x, 'human')) print(letters)

Programmi käivitamisel on väljund

 ('h', 'u', 'm', 'a', 'n')

Kuid loendi mõistmine on tavaliselt inimesele paremini loetav kui lambda funktsioon. Loenditõlgenduste abil on lihtsam mõista, mida programmeerija proovis saavutada.

Tingimused loendi mõistmises

Loendi mõistmine võib kasutada tingimuslauset olemasoleva loendi (või muude rühmade) muutmiseks. Loome loendi, mis kasutab matemaatilisi operaatoreid, täisarvusid ja vahemikku ().

Näide 4: if-i kasutamine loendi mõistmisega

 number_list = ( x for x in range(20) if x % 2 == 0) print(number_list)

Ülaltoodud programmi käivitamisel on väljund:

 (0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

Loendi number_list täidetakse üksustega vahemikus 0–19, kui üksuse väärtus jagub 2-ga.

Näide 5: pesastatud IF loendi mõistmisega

 num_list = (y for y in range(100) if y % 2 == 0 if y % 5 == 0) print(num_list)

Ülaltoodud programmi käivitamisel on väljund:

 (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)

Siin loetlege mõistmise kontroll:

  1. Kas y jagub 2-ga või mitte?
  2. Kas y jagub 5-ga või mitte?

Kui y vastab mõlemale tingimusele, lisatakse y num_list.

Näide 6: kui … veel loendi mõistmisega

 obj = ("Even" if i%2==0 else "Odd" for i in range(10)) print(obj)

Ülaltoodud programmi käivitamisel on väljund:

 ('Paaris', 'Paaritu', 'Paaritu', 'Paaritu', 'Paar', 'Paaritu', 'Paaritu', 'Paaritu', 'Paaritu', 'Paaritu')

Here, list comprehension will check the 10 numbers from 0 to 9. If i is divisible by 2, then Even is appended to the obj list. If not, Odd is appended.

Nested Loops in List Comprehension

Suppose, we need to compute the transpose of a matrix that requires nested for loop. Let’s see how it is done using normal for loop first.

Example 7: Transpose of Matrix using Nested Loops

 transposed = () matrix = ((1, 2, 3, 4), (4, 5, 6, 8)) for i in range(len(matrix(0))): transposed_row = () for row in matrix: transposed_row.append(row(i)) transposed.append(transposed_row) print(transposed)

Output

 ((1, 4), (2, 5), (3, 6), (4, 8)) 

The above code use two for loops to find transpose of the matrix.

We can also perform nested iteration inside a list comprehension. In this section, we will find transpose of a matrix using nested loop inside list comprehension.

Example 8: Transpose of a Matrix using List Comprehension

 matrix = ((1, 2), (3,4), (5,6), (7,8)) transpose = ((row(i) for row in matrix) for i in range(2)) print (transpose)

When we run the above program, the output will be:

 ((1, 3, 5, 7), (2, 4, 6, 8))

In above program, we have a variable matrix which have 4 rows and 2 columns.We need to find transpose of the matrix. For that, we used list comprehension.

**Note: The nested loops in list comprehension don’t work like normal nested loops. In the above program, for i in range(2) is executed before row(i) for row in matrix. Hence at first, a value is assigned to i then item directed by row(i) is appended in the transpose variable.

Key Points to Remember

  • List comprehension is an elegant way to define and create lists based on existing lists.
  • List comprehension is generally more compact and faster than normal functions and loops for creating list.
  • However, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.
  • Pidage meeles, et iga loendi mõistmist saab tsükli jaoks ümber kirjutada, kuid iga loendi mõistmist ei saa loendi mõistmise kujul ümber kirjutada.

Huvitavad Artiklid...