List comprehension, Python'daki güçlü bir özellik ve bir liste içinde işlemleri yapmak için bir yol sağlar. Bu, kodu daha kısa, daha okunaklı ve daha anlaşılır hale getirir.
List comprehension, bir for döngüsü ve bir filtreleme işlemi içeren bir liste oluşturma yöntemidir. Yani, bir liste oluşturmak için bir veya birden çok döngü veya koşul ifadeleri kullanılabilir.
Örneğin, bir liste oluşturmak için geleneksel yol şöyle gösterilir:
```
numbers = [1, 2, 3, 4, 5]
squares = []
for num in numbers:
squares.append(num*num)
print(squares)
# Output: [1, 4, 9, 16, 25]
```
List comprehension ile aynı işlemi yapabiliriz ve kodumuzu daha az hatırlarız:
```
numbers = [1, 2, 3, 4, 5]
squares = [num*num for num in numbers]
print(squares)
# Output: [1, 4, 9, 16, 25]
```
Yukarıdaki örnekte, `squares` adında bir liste elde etmek için `numbers` listesindeki her elemanın karesini aldık. `num*num` ifadesi sadece bir işaret. `[num*num for num in numbers]` tüm bu işlemleri yapmak için list comprehension kullanır.
Genellikle, bir liste comprehension şu şekilde kullanılır:
```
[expression for variable in iterable if condition]
```
`expression`, liste içindeki her elemanın işlemini belirtir. `variable` ise döngü için değişken adıdır ve `iterable` içindeki her eleman için döngüyü çalıştırır. `if condition` koşulu, yalnızca belirli koşullara sahip olan elemanların listeye alınmasını sağlar.
Örnek verelim:
```
even_numbers = [num for num in range(1,11) if num % 2 == 0]
print(even_numbers)
# Output: [2, 4, 6, 8, 10]
```
Yukarıdaki örnekte, `even_numbers` adında bir liste oluşturmak için 1 ile 10 arasındaki çift sayıları döngüye soktuk ve yalnızca 2'ye bölünebilenleri aldık. `num % 2 == 0` ifadesi bölümden kalanı bulur ve yalnızca çift sayıları alır.
List comprehension ayrıca birden çok döngü kullanarak ve daha karmaşık işlemleri liste halinde geri döndürerek de kullanılabilir.
Örnek verelim:
```
multiples = [i*j for i in range(1, 4) for j in range(1, 3)]
print(multiples)
# Output: [1, 2, 2, 4, 3, 6]
```
Yukarıdaki örnekte, `multiples` adında bir liste oluşturmak için `range(1,4)` ve `range(1,3)` içindeki sayıları yuvarladık ve çıktı olarak bir liste elde ettik. İlk döngüde, `i` değişkenini 1, 2 ve 3'e kadar yineleyerek aynı şekilde ikinci döngüde `j` değişkenini 1 ve 2'ye kadar yineleyerek çarpma işlemini gerçekleştirdik ve sonuç olarak `multiples` listesini aldık.
List comprehension, bir veri öğesini daha hızlı ve daha kolay bir şekilde liste halinde döndürmek için mükemmel bir yöntemdir. Başlangıçta döngüleri, koşulları ve iç içe döngüleri kullanmak görünse de, zamanla daha kolay ve hızlı bir şekilde kullanacaksınız.