2009-08-17 18 views
26

Liste anlama kullanırken, yeni listenin sırası herhangi bir şekilde garanti edilir mi? Bir yapmacık bir örnek olarak, bir liste anlama tanımına tarafından garanti aşağıdaki davranıştır: EşitListe kavramasından gelen sonuçların sırası garanti ediliyor mu?

>> a = [x for x in [1,2,3]] 
>> a 
[1, 2, 3] 

, garantili aşağıdaki eşitlik geçerli: Özellikle

>> lroot = [1, 2, 3] 
>> la = [x for x in lroot] 
>> lb = [] 
>> for x in lroot: 
    lb.append(x) 
>> lb == la 
True 

, bu benim ilgilendiğim sipariş var İşte.

+2

Evet, garanti edildi. Bu bir sıra. – hughdbrown

cevap

28

Evet, liste kavraması, orijinal yinelemenin sırasını korur (eğer varsa). Orijinal yinelenen sipariş verilirse (liste, tuple, dosya vb.), Sonuçta alacağınız sıra budur. Eğer yinelemeniz sıralanmamışsa (set, dict, vb.), Öğelerin sırasına ilişkin bir garanti yoktur.

+1

Setler ve diktelerle, verilerin değişmemesi durumunda siparişin değişmeyeceğine dair bir garanti olduğuna inanıyorum. Örneğin. bir 's' kümesi verildiğinde, aşağıdakiler her zaman doğru olacaktır: [x için x için x] == [x için x in x]. –

+0

Bu aynı zamanda anlama işleminin bu sırada gerçekleştiği anlamına mı geliyor? Yani p [x] 'in x (x)' ini x (x) 'i s sırasına göre mi yoksa farklı bir düzende olsa da (sadece teorik olarak da olsa), sonucu bir şekilde doğru sıralamaya geri döndürür. ? –

3

Evet, bir liste bir dizidir. Sıra sırası önemlidir.

İlgili konular