A Python-lista megértése (példákkal)

Ebben a cikkben megtudhatjuk a Python-lista megértését és használatát.

Sorolja fel a megértést vs a hurokért a Pythonban

Tegyük fel, hogy el akarjuk különíteni a szó betűit, humanés a betűket hozzáadjuk egy lista eleméhez. Az első dolog, ami eszembe jut, a hurok használata lenne.

1. példa: Iterálás egy karakterláncon keresztül a hurokhoz

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

A program futtatásakor a kimenet a következő lesz:

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

A Pythonnak azonban egyszerűbb módja van a probléma megoldására a Listaértés használatával. A listamegértés elegáns módszer a meglévő listák alapján történő listák meghatározására és létrehozására.

Lássuk, hogyan írható fel a fenti program a listamegértések segítségével.

2. példa: Iterálás egy sztringen keresztül a Listamegértés használatával

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

A program futtatásakor a kimenet a következő lesz:

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

A fenti példában új listát rendelünk a h_letters változóhoz, és a lista tartalmazza az iterálható 'human' karakterlánc elemeit. A print()kimenet fogadásához függvényt hívunk .

A lista megértésének szintaxisa

 (a lista elemének kifejezése)

Most már azonosíthatjuk, hol használják a listamegértéseket.

Ha észrevette, humanegy karakterlánc, nem pedig lista. Ez a listamegértés ereje. Azonosítani tudja, mikor kap egy karakterláncot vagy egy duplát, és úgy dolgozhat rajta, mint egy lista.

Ezt megteheti hurkok segítségével. Azonban nem minden ciklust lehet átírni listaértésként. De miközben megtanulja és kényelmesen érti a listamegértéseket, azon kapja magát, hogy egyre több hurkot vált le ezzel az elegáns szintaxissal.

Felsorolja a megértéseket a Lambda függvényekkel

A listák megértése nem az egyetlen módja a listákon való munkának. A különféle beépített függvények és a lambda függvények kevesebb kódsorban hozhatnak létre és módosíthatnak listákat.

3. példa: A Lambda függvények használata a Listán belül

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

A program futtatásakor a kimenet az lesz

 ('emberi')

A felsorolás megértése azonban általában emberileg olvashatóbb, mint a lambda függvény. Könnyebb megérteni, hogy a programozó mit akart elérni, amikor a listamegértéseket használják.

Feltételek a lista megértésében

A listamegértések feltételes utasítással módosíthatják a meglévő listát (vagy más sorrendeket). Létrehozunk egy listát, amely matematikai operátorokat, egész számokat és tartományt () használ.

4. példa: if használata listamegértéssel

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

A fenti program futtatásakor a kimenet a következő lesz:

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

A listát, a_számot, a 0–19 tartományba eső elemek töltik fel, ha az elem értéke osztható 2-vel.

5. példa: Beágyazott IF listamegértéssel

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

A fenti program futtatásakor a kimenet a következő lesz:

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

Itt sorolja fel a megértés ellenőrzését:

  1. O osztható 2-vel vagy sem?
  2. O osztható 5-tel vagy sem?

Ha y mindkét feltételnek megfelel, akkor y hozzáadódik a num_listhoz.

6. példa: ha… másként a lista megértésével

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

A fenti program futtatásakor a kimenet a következő lesz:

 („Páros”, „Páratlan”, „Páros”, „Páratlan”, „Páros”, „Páratlan”, „Páros”, „Páratlan”, „Páros”, „Páratlan”)

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.
  • Ne feledje, hogy minden listamegértést át lehet írni ciklusra, de minden listát nem lehet újraírni listamegértés formájában.

érdekes cikkek...