2012-10-26 15 views
8

Tekrarlanan dilimleme gayet güzel küpe ve listelerde çalışır: bir dize dilimleme defalarca

>>> tuple = ("nav", "yad") 
>>> tuple[0] 
'nav' 
>>> tuple[0][0] 
'n' 

Ama dizeleri ile

: Ben dize adı değişkeni üzerinde dilimleme tekrarlanan deneyin

>>> name="university" 
>>> name[0] 
'u' 

is burada garip şey , name[0][0] veya name[0][-1]'da hiçbir şey yoktur, neden "u" gösteriliyor?

>>> name[0][0] 
'u' 
>>> name[0][-1] 
'u' 

Ve bir şey daha sonra name[0][0] de ise neden diğer işaretlerde?

>>> name[0][1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
+0

Tekrarlanan dilimleme, listelerin bir özelliği değildir. [1,2,3] [0] [0] 'seçeneğini deneyin. –

+0

Dizin oluştururken (aslında topladığım örneklerden dilimleme değil), dizeleri aldığınızda, bir karakter python'daki bir uzunluk dizesidir. Tür değişmez. Tuple/listelerde durum böyle değil. – gorlum0

cevap

12

Dize bir dizidir. Bir karakterin dizgisi hala bir elemanlı bir dizidir. Yani bir dize ile name[0][0][0][0]... yapabilir ve iyi çalışır. Bir dizinin son elemanını döndürür indeksi -1, için de geçerlidir: dize name[0] tek unsur olduğundan

>>> name[0][0] 
'u' 
>>> name[0][0][-1] 
'u' 
>>> name[0][0][-1][-1] 
'u' 

name[0][1] açıkçası başarısız olur.

0

@ Roman'ın yanıtını eklemek için. name[0]'un bir çeşit char döndüreceği izlenimi altındasınız. Ama öyle değil. Ne olur name[0], 1 uzunluğunda bir dizi döndürür. Bu nedenle, boş olmayan bir dizeyi 0 ile tekrar tekrar kaç kez indeks ederseniz edin, her zaman aynı değeri verir.

İlgili konular