Разумевање Питхон листе (са примерима)

У овом чланку ћемо научити о разумевању Питхон листе и како да је користимо.

Листа разумевања вс Фор Лооп у Питхон-у

Претпоставимо да желимо да одвојимо слова речи humanи додамо их као ставке на листи. Прво што вам падне на памет било би коришћење фор петље.

Пример 1: Итерација кроз низ помоћу фор Лооп

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

Када покренемо програм, излаз ће бити:

 ('х', 'у', 'м', 'а', 'н')

Међутим, Питхон има лакши начин да реши овај проблем помоћу разумевања листе. Разумевање листе је елегантан начин за дефинисање и креирање листа на основу постојећих листа.

Погледајмо како се горњи програм може написати помоћу разумевања листе.

Пример 2: Итерација кроз низ помоћу разумевања листе

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

Када покренемо програм, излаз ће бити:

 ('х', 'у', 'м', 'а', 'н')

У горњем примеру, променљивим х_леттерс додељује се нова листа, а листа садржи ставке итерабилног низа 'хуман'. Позивамо print()функцију да прими излаз.

Синтакса разумевања листе

 (израз за ставку на листи)

Сада можемо идентификовати где се користе схватања списка.

Ако сте приметили, humanто је низ, а не листа. То је моћ разумевања листе. Може да препозна када прими низ или корицу и ради на њој попут листе.

То можете учинити помоћу петљи. Међутим, не може се свака петља поново написати као разумевање листе. Али док научите и будете се удобно разумевали са списком, наћи ћете да све више петљи замењујете овом елегантном синтаксом.

Листајте Разумевања у односу на Ламбда функције

Разумевање листа није једини начин рада на списковима. Разне уграђене функције и ламбда функције могу да креирају и мењају листе у мање редова кода.

Пример 3: Коришћење Ламбда функција унутар листе

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

Када покренемо програм, излаз ће бити

 ('х', 'у', 'м', 'а', 'н')

Међутим, поимања пописа обично су човеку читљивија од ламбда функција. Лакше је разумети шта је програмер покушавао да постигне када се користе разумевања пописа.

Условљавања у разумевању листе

Разумевања листа могу користити условни израз за модификовање постојеће листе (или других корпица). Направићемо листу која користи математичке операторе, целе бројеве и опсег ().

Пример 4: Употреба иф са разумевањем листе

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

Када покренемо горњи програм, излаз ће бити:

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

Листа, број_лист, попунит ће се ставкама у распону од 0-19 ако је вриједност ставке дјељива са 2.

Пример 5: Угњечени ИФ са разумевањем листе

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

Када покренемо горњи програм, излаз ће бити:

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

Овде наведите провере разумевања:

  1. Да ли је и дељиво са 2 или не?
  2. Да ли је дељиво са 5 или не?

Ако и задовољава оба услова, и се додаје на нум_лист.

Пример 6: иф … елсе Са разумевањем листе

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

Када покренемо горњи програм, излаз ће бити:

 („Парно“, „Непарно“, „Парно“, „Непарно“, „Парно“, „Непарно“, „Парно“, „Непарно“, „Парно“, „Непарно“)

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.
  • Запамтите, свако разумевање листе може се преписати у фор лооп, али свака фор лооп не може се преписати у облику разумијевања листе.

Занимљиви Чланци...