Python'un varsayılan liste sıralayıcısı, bir tuple listesi geçtiğinde, her bir tuple'daki ilk öğeye göre sıralama yapar gibi görünüyor. Bu doğru mu? Değilse, ilk elemanlarına göre bir tupl listesini sıralamanın doğru yolu nedir?Python bir tupl listesini nasıl sıralıyor?
cevap
Bu, tupllerdeki ilk elemanlar tarafından otomatik olarak bir tupl listesini sıralar, daha sonra ikinci elemanlar ve böylece tuple ([1,2,3]) tuple ([1,2,4]) önce gider . Bu davranışı geçersiz kılmak istiyorsanız sıralama yöntemine ikinci argüman olarak bir satır geçirebilirsiniz. Bu callable 1, -1, 0 döndürmelidir.
Sıralamak için anahtar argüman olsa bile cmp argüman kullanmayın! Bu foo.sort'u (anahtar = lambda x: x [1]) foo.sort'a (lambda x, y: cmp (x [1], y [1])) tercih eder. Anlamak hem daha kolay hem de daha verimli. – cthulahoops
@cthulahoops Ben “operator.itemgetter” kullanarak lambda fonksiyonundan daha iyi olduğunu düşünüyorum: foo.sort (key = operator.itemgetter (1)) 'foo.sort'dan daha güzel (anahtar = lambda x: x [1]) '. Bu sadece benim düşüncem. –
Ancak belgelere alakalı bir bağlantı olması güzel olurdu. – gaazkam
Evet, bu varsayılan değerdir. Aslında bu, Python'daki klasik "DSU" (Decorate-Sort-Undecorate) deyiminin temeli. Bakınız Code Like a Pythonista.
Hayır, tupllar dizeler gibi sequence types'dır. Bunlar sırayla her eleman kıyaslayarak, aynı sıralanır:
>>> import random
>>> sorted([(0,0,0,int(random.getrandbits(4))) for x in xrange(10)])
[(0, 0, 0, 0), (0, 0, 0, 4), (0, 0, 0, 5), (0, 0, 0, 7), (0, 0, 0, 8),
(0, 0, 0, 9), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 14)]
üç sıfır ilk elemanın dışında bir şeylerin kontrol elde edilmelidir göstermek için sadece vardır.
Hm. Azınlıktayım gibi görünüyorum ... Python her tupleda sadece ilk öğeye bakarak sıralarsa, test sonuçlarımı anlamıyorum. – unwind
İlk öğe ile başlar, ancak sonra devam eder. Vasil'in cevabına bakın. –
Dahili liste sıralama yöntemini kullanmayı deneyin ve bir lambda geçirin. Eğer ilk elemanınız bir tamsayı ise, bu işe yarayacaktır.
# l is the list of tuples
l.sort(lambda x,y: x-y)
Karşılaştırma işlevi için herhangi bir harca kullanabilirsiniz, mutlaka bir lambda değil. Bununla birlikte, -1 (az), 0 (eşit) veya 1 (büyüktür) döndürmesi gerekir.
-1: Bu bir tupl listesiyle nasıl çalışır? TypeError alırsınız: -: 'tuple' ve 'tuple' için desteklenmeyen işlenen tür (ler) i –
Sıralamada çalıştırılacak olan lambda işlevi, bir tupla serie'nin yinelenen öğesi olan bir argümana sahip olmalıdır: pairs.sort (anahtar = lambda çifti: çifti [1]). ilk elemanın siparişi verildikten sonra ikinci bir sipariş katmanına sahip olmak istiyorsanız çiftler.sort (anahtar = lambda çifti: çift [1]) veya pairs.sort (anahtar = lambda çifti: çift [1], çift [0]) . – Alex
Kontrol dışarı "Devin jeanpierre" diye bir tuple kullanmaktır diyor ve gösteren bu soruya sort-a-dictionary-in-python-by-the-value cevabı nasıl gerçekte örnek kod çalıştırmasına mı ikinci değere
- 1. Swift: Boş tupl bildirme
- 2. İki tupl listesi derinlik karşılaştırması nasıl yapılır?
- 3. Python: Görevler listesini yönetme
- 4. Python için Listesini
- 5. Python: Python sözlüklerinin bir listesini bir JSON nesnesi dizisine dönüştürme
- 6. N-inci elemanları python'daki bir tupl listesinden nasıl çıkarılır?
- 7. Python zaman değerleri listesini nasıl sıralayabilirim?
- 8. django şablonunda python listesini görüntüleme
- 9. Python listesini işleve göre sırala
- 10. Bir jinja şablonunda listelerin python listesini görüntüleme
- 11. Bir python listesini çakışan parçaların listesine bölme
- 12. Python listesini Pas işlevine geçir
- 13. Metin dosyasından tuple olarak listelerin okunup tupl olarak okunması, string değil - Python
- 14. nasıl sıralıyor dize sahipliğini almak veya almamak belirtmek için?
- 15. Python listesini Boost.python kullanarak C++ vektörüne geçirme
- 16. Nesnelerin bir listesini yazdırma
- 17. Sabit uzunlukta bir Python listesini değişken karakter sayısına göre genişletme?
- 18. Python: listelerin listesini tuplların tuplesine dönüştürme
- 19. Nesnelerin bir listesini devamlılık ile nasıl gruplayabilirim?
- 20. python nesnelerinin bir listesini __str__ yöntemi ile birleştirerek
- 21. python: listelerin bir listesini düzleştirin, ancak daha fazla
- 22. Yuvalanmış liste listeleri python 3.3'deki bir tuple listesine nasıl dönüştürülür?
- 23. nasıl pyplot bir şekil için eksenlerinin bir listesini almak için?
- 24. Python
- 25. UITableViewCell, hücre içeriğini sağa kaydırmadan denetimi yeniden sıralıyor mu?
- 26. listelerin bir listesini aktarma
- 27. VIM'de dizelerin bir listesini nasıl değiştirebilirim?
- 28. Dart'ta dizelerin bir listesini nasıl sıralayabilirim?
- 29. C# içindeki öğelerin bir listesini nasıl eklenir?
- 30. Maven'e varsayılan depoların bir listesini nasıl sorabilirim?
göre sıralamak için? Eğer öyleyse, ne gördün? Lütfen örnek kodunuzu gönderin. –