Python-luettelon ymmärtäminen (esimerkkien avulla)

Tässä artikkelissa opit Python-luettelon ymmärtämisestä ja siitä, miten sitä käytetään.

Luettele Pythonin ymmärtäminen vs silmukka

Oletetaan, että haluamme erottaa sanan humankirjaimet ja lisätä kirjaimet luettelon kohteiksi. Ensimmäinen asia, joka tulee mieleen, on käyttää silmukkaa.

Esimerkki 1: Iteroituminen merkkijonon kautta Käyttäen silmukalle

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

Kun suoritamme ohjelmaa, tulos on:

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

Pythonilla on kuitenkin helpompi tapa ratkaista tämä ongelma luettelonäkymän avulla. Luettelon ymmärtäminen on tyylikäs tapa määritellä ja luoda luetteloita olemassa olevien luetteloiden perusteella.

Katsotaanpa, kuinka yllä oleva ohjelma voidaan kirjoittaa käyttämällä luettelonäkymiä.

Esimerkki 2: Iteroituminen merkkijonon läpi käyttämällä luettelonäkymää

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

Kun suoritamme ohjelmaa, tulos on:

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

Yllä olevassa esimerkissä uusi luettelo määritetään muuttujalle h_letters, ja luettelo sisältää iteroitavan merkkijonon 'human' kohteet. Kutsumme print()funktion vastaanottamaan lähtö.

Luettelon ymmärtämisen syntaksi

 (luettelon kohteen lauseke)

Voimme nyt tunnistaa luettelon ymmärtämisen sijainnin.

Jos huomasit, humanon merkkijono, ei luettelo. Tämä on luettelon ymmärtämisen voima. Se voi tunnistaa, kun se saa merkkijonon tai tuplan, ja työskennellä sen kanssa kuten luettelo.

Voit tehdä sen silmukoilla. Kaikkia silmukoita ei kuitenkaan voida kirjoittaa uudelleen luettelon ymmärtämiseen. Mutta kun opit ja tunnet olosi mukavaksi luettelon ymmärtämisessä, huomaat korvaavan yhä enemmän silmukoita tällä tyylikkäällä syntaksilla.

Luettelo Ymmärrys vs Lambda-toiminnot

Luettelon ymmärtäminen ei ole ainoa tapa työskennellä luetteloissa. Erilaiset sisäänrakennetut toiminnot ja lambda-toiminnot voivat luoda ja muokata luetteloita vähemmän koodiriveillä.

Esimerkki 3: Lambda-toimintojen käyttäminen luettelossa

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

Kun suoritamme ohjelman, tulos on

 ('ihmisen')

Luettelon ymmärtäminen on kuitenkin yleensä ihmisen luettavampaa kuin lambda-funktio. On helpompaa ymmärtää, mitä ohjelmoija yritti saavuttaa, kun käytetään luettelon ymmärtämistä.

Ehdolliset luettelon ymmärtämisessä

Luettelon ymmärtäminen voi käyttää ehdollista lausetta olemassa olevan luettelon (tai muiden joukkojen) muokkaamiseen. Luomme luettelon, joka käyttää matemaattisia operaattoreita, kokonaislukuja ja aluetta ().

Esimerkki 4: if: n käyttäminen luettelon ymmärtämisen kanssa

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

Kun suoritamme yllä olevan ohjelman, tulos on:

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

Lista numero_lista täytetään kohteilla välillä 0-19, jos kohteen arvo on jaettavissa 2: lla.

Esimerkki 5: Sisäkkäinen IF-luettelon ymmärtäminen

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

Kun suoritamme yllä olevan ohjelman, tulos on:

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

Tässä luetellaan ymmärryksen tarkastukset:

  1. Onko y jaettavissa 2: lla vai ei?
  2. Onko y jaettavissa 5: llä vai ei?

Jos y täyttää molemmat ehdot, y lisätään num_list.

Esimerkki 6: jos… muuten luettelon ymmärtäminen

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

Kun suoritamme yllä olevan ohjelman, tulos on:

 ('Parillinen', 'Pariton', 'Parillinen', 'Pariton', 'Parillinen', 'Pariton', 'Parillinen', 'Pariton', 'Parillinen', 'Pariton')

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.
  • Muista, että jokainen luettelon ymmärtäminen voidaan kirjoittaa uudestaan ​​silmukkaan, mutta jokaista silmukkaa ei voida kirjoittaa uudelleen luettelon ymmärtämisen muodossa.

Mielenkiintoisia artikkeleita...