Listeler Sıralı, Değiştirilebilir Dizilerdir
Liste, Python'da en çok kullanılan koleksiyon tipidir. Değişebilecek — eklenecek, kaldırılacak, sıralanacak, güncellenecek — sıralı bir değerler kümesi tutuyorsan, liste neredeyse her zaman doğru seçimdir.
Birini köşeli parantezlerle oluşturursun:
Listeler her şeyi, hatta başka listeleri bile tutabilir. Pratikte çoğu liste tek tür bir şey tutar — bir kullanıcı listesi, bir sayı listesi — çünkü üzerinde akıl yürütmesi en kolay olan budur.
İndeksleme
Her elemanın 0'dan başlayan bir konumu vardır. Köşeli parantezlerle erişirsin:
Var olmayan bir index istemek IndexError fırlatır. Aralık dışına çıkma ihtimali varsa ya önce uzunluğu kontrol et ya da erişimi try içine al.
Dilimleme
Dilimleme sana bir aralık eleman verir. Söz dizimi list[start:stop:step], stringlerdekiyle aynı:
Kafana kazınması gereken iki şey:
- Dilimleme her zaman yeni bir liste döner. Dilimi değiştirmek orijinali etkilemez.
- Stop index'i dışlayıcıdır —
nums[2:5]sana 2, 3 ve 4 index'lerini verir, 5'i değil.
Append, Extend ve Insert ile Eleman Eklemek
Listeye ekleme yapan üç metot farklı işler yapar ve bunları karıştırmak yaygın bir hata kaynağıdır:
append(x),x'i tek bir eleman olarak ekler —xbir liste olsa bile.items.append([1, 2])listenin kendisini tek bir giriş olarak ekler.extend(iterable), iterable'dan her bir elemanı ekler.items.extend([1, 2])iki giriş ekler.insert(i, x), belirli bir index'e ekler;ive sonrasındaki her şeyi bir konum ileri iter.
+= sağında liste olduğunda extend gibi çalışır:
Çıkarma için:
Listede olmayan bir şeyi remove() etmeye çalışırsan Python ValueError fırlatır. "Varsa kaldır" istiyorsan, ya önce in ile kontrol et ya da bir try kullan.
Index ile del kullanarak da silebilirsin:
Uzunluk, Üyelik, Sayma
in, bir listenin bir değer içerip içermediğini kontrol etmenin okunaklı yoludur. Büyük bir listede bu soruyu defalarca soracaksan, onun yerine bir set kullan — set üyeliği O(1) iken liste üyeliği O(n)'dir.
Sıralama
İki yol var ve seçim önemli:
İkisi de azalan sıralama için reverse=True kabul eder:
Ve özel sıralama için bir key fonksiyonu:
key her elemana uygulanır ve karşılaştırılan, onun sonucudur. Yaygın durumlar: uzunluğa göre, belirli bir özniteliğe göre veya bir stringin küçük harfli haline göre sıralama.
Tersine Çevirme
Üç tat, ihtiyacına göre:
Orijinale ihtiyacın yoksa yerinde kullan. Yeni bir kopya istiyorsan dilimleme kullan. Yeni bir liste oluşturmadan sadece tersine iterasyon yapmak istiyorsan reversed() kullan.
Paylaşılan Referans Tuzağı
Listeler değiştirilebilir ve değişkenler referanstır. Bu, iki değişkenin aynı listeyi gösterebileceği anlamına gelir:
b = a listeyi kopyalamadı; b'yi aynı liste için ikinci bir isim yaptı. Bir kopya istiyorsan, iste:
Bu her Python programcısını en az bir kez ısırır. Unutma: iki liste arasındaki = kopyalamaz.
Döngü ve İnşa
Temel kalıbı for döngüsü sayfasından zaten biliyorsun:
Bu okunaklı ve her zaman işini görür. Alıştığında, list comprehension karşılığı aynı şeyi tek satırda yapar:
Comprehension'ları iki sayfa sonra ayrıntılı ele alacağız.
Hızlı Bir Çıkarım Cetveli
Bilmeye değer metotlar, bir bakışta:
append(x)— sona ekleextend(iter)— iterable'dan her elemanı ekleinsert(i, x)— i index'ine eklepop()/pop(i)— kaldır ve döndürremove(x)— x'in ilk geçişini kaldırsort()/sort(key=...)/sort(reverse=True)reverse()index(x)— ilk x'in konumucount(x)— x'lerin sayısıcopy()— sığ kopya
Sırada
Listeler iş atıdır. Sırada tuple'lara — değişmez kuzenine — bakacağız; bir liste yerine tuple'a uzanmanın daha iyi tercih olduğu zamanları göreceğiz.
Sıkça Sorulan Sorular
Python'da nasıl liste oluştururum?
Virgülle ayrılmış değerleri köşeli parantez içine yaz: fruits = ['apple', 'banana', 'cherry']. Listeler herhangi bir türde değer tutabilir ve aynı listede türler karıştırılabilir, gerçi çoğu gerçek liste alışkanlıktan ötürü homojendir.
Python'da listeyi nasıl sıralarım?
Listeyi yerinde sıralamak için üzerinde .sort() çağır ya da orijinali değiştirmeden yeni sıralı bir liste almak için yerleşik sorted(list)'i kullan. Her ikisi de azalan sıra için reverse=True bayrağını ve özel sıralama anahtarları için key= argümanını kabul eder.
Python'da bir listeyi nasıl tersine çeviririm?
list.reverse() yerinde tersine çevirir. list[::-1] yeni bir ters liste döndürür. reversed(list) üzerinde döngü kurabileceğin bir iterator döndürür. İhtiyacına göre birini seç: yerinde vs. yeni kopya vs. lazy iterasyon.