Python Listesini Anlama (Örneklerle)

Bu yazıda, Python liste anlayışlarını ve nasıl kullanılacağını öğreneceğiz.

Python'da Kavrama ve Döngü İçin Liste

Diyelim ki, kelimenin harflerini ayırmak ve harfleri humanbir listenin öğeleri olarak eklemek istiyoruz . Akla gelen ilk şey, for döngüsü kullanmak olacaktır.

Örnek 1: Döngü için Kullanarak bir dizede yineleme

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Ancak Python, bu sorunu Liste Anlama'yı kullanarak çözmenin daha kolay bir yoluna sahiptir. Listeleri anlama, mevcut listeleri temel alan listeleri tanımlamanın ve oluşturmanın zarif bir yoludur.

Yukarıdaki programın liste anlayışları kullanılarak nasıl yazılabileceğini görelim.

Örnek 2: Liste Anlamayı Kullanarak Bir Dizede Yineleme

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Yukarıdaki örnekte, h_letter değişkenine yeni bir liste atanmıştır ve liste, yinelenebilir 'insan' dizesinin öğelerini içerir. print()Çıkışı almak için fonksiyonu çağırıyoruz .

Liste Anlama Sözdizimi

 (listedeki öğe için ifade)

Artık liste anlamalarının nerede kullanıldığını belirleyebiliriz.

Fark ettiyseniz human, bir dizedir, liste değil. Bu, listeyi anlamanın gücüdür. Ne zaman bir dizi veya demet aldığını belirleyebilir ve üzerinde bir liste gibi çalışabilir.

Bunu döngüleri kullanarak yapabilirsiniz. Bununla birlikte, her döngü liste anlama olarak yeniden yazılamaz. Ancak, liste kavrayışlarını öğrendikçe ve alıştıkça, kendinizi bu zarif sözdizimi ile giderek daha fazla döngüyü değiştirirken bulacaksınız.

Anlaşmaları ve Lambda işlevlerini listeleyin

Listeler üzerinde çalışmanın tek yolu liste anlamaları değildir. Çeşitli yerleşik işlevler ve lambda işlevleri, listeleri daha az kod satırında oluşturabilir ve değiştirebilir.

Örnek 3: List içinde Lambda işlevlerini kullanma

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

Programı çalıştırdığımızda çıktı

 ('insan')

Bununla birlikte, liste anlamaları genellikle lambda işlevlerinden daha okunabilirdir. Liste anlayışları kullanıldığında programcının neyi başarmaya çalıştığını anlamak daha kolaydır.

Liste Anlamada Koşullar

Liste anlayışları, mevcut listeyi (veya diğer demetleri) değiştirmek için koşullu ifadeyi kullanabilir. Matematiksel operatörler, tam sayılar ve range () kullanan bir liste oluşturacağız.

Örnek 4: Liste Kavrama ile if kullanma

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

Yukarıdaki programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Sayı_listesi, öğenin değeri 2'ye bölünebiliyorsa, 0-19 aralığındaki öğelerle doldurulur.

Örnek 5: Liste Kavrama ile İç İçe EĞER

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

Yukarıdaki programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Burada, anlama kontrollerini listeleyin:

  1. Y 2'ye bölünebilir mi, bölünmez mi?
  2. Y 5'e bölünebilir mi değil mi?

Y her iki koşulu da karşılarsa, y num_list'e eklenir.

Örnek 6: if… else Listeyi Anlama ile

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

Yukarıdaki programı çalıştırdığımızda çıktı şöyle olacaktır:

 ("Çift", "Tek", "Çift", "Tek", "Çift", "Tek", "Çift", "Tek", "Çift", "Tek")

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.
  • Unutmayın, her liste anlayışı for döngüsü içinde yeniden yazılabilir, ancak her for döngüsü liste anlama biçiminde yeniden yazılamaz.

Ilginç makaleler...