„Python“ sąrašo supratimas (su pavyzdžiais)

Šiame straipsnyje mes sužinosime apie „Python“ sąrašo supratimą ir kaip jį naudoti.

Pateikite supratimą prieš „Loop“ „Python“

Tarkime, mes norime atskirti žodžio humanraides ir pridėti jas kaip sąrašo elementus. Pirmas dalykas, kurį reikia prisiminti, būtų ciklo naudojimas.

1 pavyzdys: kartojimas per eilutę Use for Loop

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

Kai vykdysime programą, išvestis bus:

 ('žmogus')

Tačiau „Python“ turi paprastesnį būdą išspręsti šią problemą naudodamas sąrašo supratimą. Sąrašo supratimas yra elegantiškas būdas apibrėžti ir kurti sąrašus, remiantis esamais sąrašais.

Pažiūrėkime, kaip aukščiau pateiktą programą galima parašyti naudojant sąrašo supratimą.

2 pavyzdys: kartojimas per eilutę naudojant sąrašo supratimą

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

Kai vykdysime programą, išvestis bus:

 ('žmogus')

Ankstesniame pavyzdyje naujas sąrašas priskiriamas kintamiesiems h_letters, o sąraše yra iteruojamos eilutės „human“ elementai. Mes kviečiame print()funkciją gauti išvestį.

Sąrašo supratimo sintaksė

 (elemento išraiška sąraše)

Dabar galime nustatyti, kur naudojami sąrašo supratimai.

Jei pastebėjote, humanyra eilutė, o ne sąrašas. Tai yra sąrašo supratimo jėga. Jis gali nustatyti, kai gauna eilutę ar paketą, ir dirbti su juo kaip sąraše.

Tai galite padaryti naudodami kilpas. Tačiau ne kiekvieną kilpą galima perrašyti kaip sąrašo supratimą. Tačiau mokydamiesi ir supratę apie sąrašus suprasite, kad vis daugiau kilpų pakeisite šia elegantiška sintakse.

Pateikite supratimo ir „Lambda“ funkcijų sąrašą

Sąrašų supratimas nėra vienintelis būdas dirbti su sąrašais. Įvairios įmontuotos funkcijos ir „lambda“ funkcijos gali sukurti ir modifikuoti sąrašus mažiau kodų eilutėse.

3 pavyzdys: „Lambda“ funkcijų naudojimas sąraše

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

Kai vykdysime programą, bus išvestis

 ('žmogus')

Tačiau supratimas apie sąrašą paprastai yra labiau suprantamas žmonėms nei lambda funkcijos. Lengviau suprasti, ką programuotojas bandė pasiekti, kai naudojamas supratimas apie sąrašus.

Sąlyginiai sąrašo supratime

Sąrašo supratimas gali naudoti sąlyginį teiginį, kad pakeistumėte esamą sąrašą (ar kitus rinkinius). Sukursime sąrašą, kuriame naudojami matematiniai operatoriai, sveiki skaičiai ir diapazonas ().

4 pavyzdys: „if“ naudojimas su sąrašo supratimu

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

Kai vykdysime pirmiau nurodytą programą, išvestis bus:

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

Sąrašą „number_list“ užpildys 0–19 diapazono elementai, jei elemento vertė dalijasi iš 2.

5 pavyzdys: įdėtas IF su sąrašo supratimu

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

Kai vykdysime pirmiau nurodytą programą, išvestis bus:

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

Čia išvardykite supratimo patikrinimus:

  1. Ar y dalijasi iš 2, ar ne?
  2. Ar y dalijasi iš 5, ar ne?

Jei y atitinka abi sąlygas, y pridedamas prie num_list.

6 pavyzdys: jei … dar su sąrašo supratimu

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

Kai vykdysime pirmiau nurodytą programą, išvestis bus:

 („Lyginis“, „Nelyginis“, „Lyginis“, „Nelyginis“, „Pora“, „Nelyginis“, „Pora“, „Nelyginis“, „Pora“, „Nelyginis“)

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.
  • Atminkite, kad kiekvienas sąrašo supratimas gali būti perrašytas kaip ciklas, tačiau kiekvieno už ciklą negalima perrašyti sąrašo supratimo forma.

Įdomios straipsniai...