2015-10-28 16 views
6

Bu kod Python yorumlayıcısı tarafından çalıştırıldığında nasıl bir hata atmıyor.Python listelerinin meraklı davranışı

Çıkış ['A', 'B', 'C', 'D', 'E']'dur. a'un sadece 3 elementi olduğundan Python'un ikinci ifadede bana bir hata vereceğini düşündüm. Kodlama yaparken bu özelliğin herhangi bir doğal kullanımı var mı?

+1

Bu, bir [20:] 'okumasından çok daha az anlam ifade eder. Oldukça garip olan ['D', 'E'] == a [20:] 'burada başarısız olacaktır – Eric

+1

Bu, dilim indeksleme çalışmalarında anlamlıdır. Bir [3:] == a [20:] 'olduğundan, C seviyesindeki dahili uygulamadan dolayı, null ya da seçili aralığın üzerine yazmak için sadece elemanlar ekleyeceğini izler. –

+0

@Eric: 'a [20:]' sadece boş bir liste döndürecektir. – tuxtimo

cevap

4

Bu şekilde python çalışır. Dilimlemek için pythonda sınır kontrolü yoktur. Değişken bir nesne olduğu için listenizi genişletir. Eğer dilimleme ile sınırları dışına okuduğunuz zaman

Ayrıca ilginç:

f = a[20:] 

f boş liste olacak.