Python'da ne zaman liste, ne zaman tuple kullanmalısınız?
Bazen başka seçeneğiniz yoktur, örneğin
"hello %s you are %s years old" % x
o zaman x bir tuple olmalıdır.
Ancak API'yi tasarlayan ve veri türlerini seçen kişi bensem, o zaman yönergeler nelerdir?
Tuples doğası gereği sabit boyutta iken lists dinamiktir.
Başka bir deyişle, bir tuple
değiştirilemez iken bir list
değiştirilebilirdir.
in
operatörünü de kullanabilirsiniz.Tuple'lar listelerden daha hızlıdır. Eğer sabit bir değer kümesi tanımlıyorsanız ve bu değer kümesiyle yapacağınız tek şey yinelemekse, liste yerine tuple kullanın.
Değiştirilmesi gerekmeyen verileri "yazarak korumanız" kodunuzu daha güvenli hale getirir. Liste yerine tuple kullanmak, bu verinin sabit olduğuna ve bunu geçersiz kılmak için özel bir düşünce (ve belirli bir işlev) gerektiğine dair zımni bir assert ifadesine sahip olmak gibidir.
Bazı tuple'lar sözlük anahtarları olarak kullanılabilir (özellikle dizeler, sayılar ve diğer tuple'lar gibi değişmez değerler içeren tuple'lar). Listeler asla sözlük anahtarı olarak kullanılamaz, çünkü listeler değişmez değildir.
Kaynak: Python 3'e Dalış
Sanırım (ve Python'da pek iyi değilim) temel fark, bir tuple'ın değiştirilemez (atamadan sonra yerinde değiştirilemez) ve bir listenin değiştirilebilir (ekleyebilir, değiştirebilir, çıkarabilirsiniz, vb.) olmasıdır.
Bu nedenle, tuple'larımı atamadan sonra değişmemesi gereken şeyler, listelerimi ise değişebilecek şeyler yapma eğilimindeyim.
Değiştirilebilir olmak zorunda mı? Bir liste kullanın. Değiştirilebilir olmamalı mı? Bir tuple kullanın.
Aksi takdirde, bu bir seçim meselesidir.
Heterojen nesnelerin koleksiyonları için (isim, cadde, şehir, eyalet ve posta kutusuna bölünmüş bir adres gibi) bir tuple kullanmayı tercih ederim. Bunlar her zaman kolayca named tuples'e yükseltilebilir.
Aynı şekilde, koleksiyon üzerinde yineleme yapılacaksa, bir listeyi tercih ederim. Eğer birden fazla nesneyi bir arada tutmak için bir kapsayıcı ise, bir tuple'ı tercih ederim.