tuple için yararlı nedir?

oy
36

Şimdi bir sınıf için Python öğreniyorum ve biz sadece veri türlerinden biri olarak dizilerini kaplı. Ben böyle bir veri türü pratikte faydalı olacağı durumlara çözemedim, üzerinde Wikipedia sayfasını okudum ama. Belki sayıların bir değişmez seti ihtiyaç olacağını Python, bazı örnekler, alabilir miyim? Bu nasıl bir listeden farklı?

Oluştur 03/09/2008 saat 17:13
kaynak kullanıcı
Diğer dillerde...                            


10 cevaplar

oy
45

  • Eğer bir fonksiyonun birden çok sonuç döndürmek istediğinizde Tuples kullanılmaktadır.
  • Bunların sabit olduğuna göre, bunlar (listeler olamaz) bir sözlük için tuşları olarak kullanılabilir.
Cevap 03/09/2008 saat 17:18
kaynak kullanıcı

oy
2

Hep bir set olarak iki veya daha fazla nesneler ile uğraşmak zaman faydalı bulacak.

Cevap 03/09/2008 saat 17:19
kaynak kullanıcı

oy
1

Bir listesi her zaman (bir dict tuşları olarak, görünüşe göre, hariç) işlevselliği ile ilgili olarak, bir demet yerini alabilir. Ancak, tanımlama grubu işler daha hızlı yapabilirsiniz. Hiç dizeleri değiştiremeyeceği gerekecektir zaman - aynı Java, örneğin, değişmez dizeleri için doğrudur? Asla!

Sadece daha iyisini programları yapmak için neler yapabileceğini sınırlayarak üzerinde iyi bir tartışma okumak; Neden Neden Fonksiyonel Programlama Önemlidir Önemlidir

Cevap 03/09/2008 saat 17:20
kaynak kullanıcı

oy
18

Eğer anahtarın içine veri birden fazla parçayı birleştirmek gerekir ve bunun için bir sınıf yapma gibi hissetmiyorum zaman Tuples iyi sözlük anahtarlarını olun.

a = {}
a[(1,2,"bob")] = "hello!"
a[("Hello","en-US")] = "Hi There!"

Ben öncelikle bir örgü köşe koordinatları tuşlarıyla bir sözlük oluşturmak için bu özelliği kullandım. Ancak, benim özel durumda, şamandıraların kesin karşılaştırma ince çalıştı işin içinde hangi her zaman değil belki [Muhtemelen sabit nokta tamsayı bir tür Gelen yüzen dönüştürmek istiyorum bu durumda] amaçlarınıza doğru

Cevap 03/09/2008 saat 17:20
kaynak kullanıcı

oy
1

kez / add / takas elemanları kaldıramazsınız oluşturulan örneğin - Bir tuple sadece değişmez bir liste gibidir belirttiği gibi bir tanımlama grubu .. birden fazla değer depolamak için yararlıdır.

değişmez olmanın bir yararı tuple boyutu sabittir çünkü çalışma zamanı belli optimizasyonlar için izin vermesidir. Bir tupple bir dönüş değeri ile bir işlev için bir parametre bağlamında kullanıldığında, bu, özellikle yararlıdır.

Cevap 03/09/2008 saat 17:23
kaynak kullanıcı

oy
2

Demetler ve listeleri genel olarak aynı kullanımlara sahiptir. Genel olarak iletmenin veri türleri çoğunlukla eşzamanlılık sorunları hakkında birçok yarar var.

Eğer doğada uçucu olmayan listeleri var ve hiçbir tüketici bunu değiştiriyor garanti gerektiğinde Yani, bir demet kullanabilir.

Bu veri değişimi, genellikle tek bir üretici tuple rebuilts ise tipik örnekleri vb şirket bölünmeleri, kategori gibi bir uygulama verileri sabitlenir.

Cevap 03/09/2008 saat 17:25
kaynak kullanıcı

oy
8

Sevdiğim bu açıklamayı .

orada sabit bir yapı (1 konumu her zaman benzeri bir değer tipi ve bir başka, ikinci ve tutar), ve listeleri homojen değerler listesi için ne zaman kullanılması gerektiğini Temel olarak, dizilerini kullanmak gerekir.

Tabii ki her zaman istisnalar, ama bu iyi bir genel kural.

Cevap 07/09/2008 saat 14:12
kaynak kullanıcı

oy
0

onlar sözdizimsel dize% operasyon gibi ve birden dönüş değerleri açısından gerekli olduğu yerlere ek olarak, hafif sınıfların biçimi olarak dizilerini kullanır. Örneğin, daha sonra başka bir yönteme geçirilen bir yöntemde bir arayana opak tanımlama geçer bir nesne olduğunu varsayın. Bir demet bunları içeren ayrı bir sınıf tanımlamak zorunda kalmadan o çerez içine birden fazla değer paketi için iyi bir yoldur.

Gerçi bu özel kullanımı konusunda tedbirli olmaya çalışıyorum. Çerezler kod boyunca bolca kullanılması halinde, bunun kullanımlarını belgelemek yardımcı olduğundan bir sınıf oluşturmak daha iyidir. onlar sadece tek bir yerde (örneğin yöntemlerinden birini çifti) kullanılmaktadır o zaman ben bir demet kullanabilir. Python çünkü herhangi bir durumda, bir demet ile başlayabilir ve daha sonra arayanın herhangi kodunu değiştirmek zorunda kalmadan özel bir sınıfının bir örneğine değiştirin.

Cevap 09/09/2008 saat 04:56