Python'da Liste Listesi Nasıl Düzleştirilir
Python'da liste listesini nasıl düzleştireceğinizi öğrenin. Yuvalanmış liste anlamalarını, itertools.chain, sum ve özyinelemeli yöntemleri kod örnekleriyle karşılaştırın.
Genel Bakış
Matris hesaplamaları, veritabanı satırları veya ayrıştırılmış veri ağaçlarıyla çalışırken, liste listesi gibi iç içe geçmiş yapılarla sıklıkla karşılaşırsınız: `[[1, 2], [3, 4]]'. Bu yapıyı düzleştirmek, onu tüm ayrı öğeleri içeren tek boyutlu bir listeye dönüştürmek anlamına gelir: "[1, 2, 3, 4]". Python bunu başarmak için birkaç şık yol sunar.
Bir liste listesini düzleştirmenin en yaygın ve Pythonic yolu, iç içe geçmiş liste anlayışını kullanmaktır: `[item for sublist in matris for item in sublist]'. Döngüler iç içe geçmiş bir "for" döngüsüyle aynı sırada yazıldığı için sözdizimi ilk başta biraz mantık dışı görünebilir, ancak oldukça optimize edilmiştir, hızlıdır ve harici kitaplıkların içe aktarılmasını gerektirmez.
Alternatif olarak, "itertools" modülünün "chain.from_iterable()" fonksiyonunu kullanabilirsiniz. Bu, bellek açısından en verimli yaklaşımdır çünkü bellekte hemen yeni bir liste tahsis etmek yerine öğeleri yavaş yavaş üreten bir yineleyici döndürür. Derinlemesine iç içe geçmiş listeler için (isteğe bağlı derinliğe sahip), tüm seviyeleri açmak için özyinelemeli bir oluşturucu işlevi yazmalısınız.
Kod ve Yürütme Çıkışı
Bu komut dosyası, liste kavramalarını, itertools.chain'i ve özyinelemeli paket açmayı kullanarak bir liste listesini düzleştirmeyi gösterir.
import itertools
matrix = [[1, 2, 3], [4, 5], [6, 7, 8]]
# Method 1: List comprehension (Pythonic and fast)
flat_comp = [item for sublist in matrix for item in sublist]
print("List comprehension:", flat_comp)
# Method 2: itertools.chain (Highly memory efficient)
flat_chain = list(itertools.chain.from_iterable(matrix))
print("itertools.chain:", flat_chain)
# Method 3: Recursive function for deep/irregular nesting
irregular = [1, [2, 3], [[4, 5], 6]]
def flatten_deep(items):
result = []
for item in items:
if isinstance(item, list):
result.extend(flatten_deep(item))
else:
result.append(item)
return result
print("Deep flatten:", flatten_deep(irregular))List comprehension: [1, 2, 3, 4, 5, 6, 7, 8]
itertools.chain: [1, 2, 3, 4, 5, 6, 7, 8]
Deep flatten: [1, 2, 3, 4, 5, 6]Adım Adım Uygulama
- Düz 2B yapılar için iç içe geçmiş liste anlayışını [item for sublist in Nested_list for item in sublist] kullanın.
- Tembel, hafıza dostu değerlendirme için itertools'u içe aktarın ve itertools.chain.from_iterable(nested_list) öğesini çağırın.
- Rastgele iç içe geçmiş koleksiyonları işlemek için isinstance(item, list) işlevini denetleyen özyinelemeli bir işlev tanımlayın.
Sıkça Sorulan Sorular
Listeleri düzleştirmek için sum() işlevini kullanabilir miyim?
Evet, sum(matrix, []) işe yarayacaktır, ancak kesinlikle önerilmez. O(N^2) karmaşıklığında çalışır çünkü her eklemede yeni bir liste kopyası oluşturur ve büyük veri kümeleri için korkunç performansa neden olur.
Liste listelerini düzleştirmenin en hızlı yöntemi nedir?
itertools.chain.from_iterable() genellikle en hızlısıdır ve bunu iç içe geçmiş liste kavramaları takip eder.
İlgili Konular
Python'da liste kavramalarını nasıl kullanacağınızı öğrenin. Kısa döngüler yazın, koşullu filtreler uygulayın ve temiz görsel sözdizimiyle matrisler oluşturun.
Python'da Bir Liste Nasıl DilimlenirGüçlü parantez sözdizimini kullanarak Python'da listeleri nasıl dilimleyeceğinizi öğrenin. Ana başlangıç, durdurma ve adım argümanları, negatif indeksleme ve geri alma listeleri.
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Değişkenleri ve Veri Türlerinin Açıklaması
Python değişkenlerini ve temel veri türlerini (dizeler, tamsayılar, kayan noktalar, boolean'lar) anlayın. Python'da hafıza atamaya yönelik eksiksiz bir başlangıç kılavuzu.
Python Liste Yöntemleri Hile Sayfası
Python liste işlemleri için hızlı başvuru kılavuzu. Öğeleri ekleme, ekleme, çıkarma, sıralama ve dilimleme konusunda uzmanlaşın.
Python vs JavaScript: Hangi Programlama Dili En İyisidir?
Python ve JavaScript arasında kapsamlı bir karşılaştırma. Sözdizimi farklılıklarını, performansı, kullanım örneklerini (arka uç ve ön uç) ve kodlama örneklerini keşfedin.