2012-10-26 34 views
8

cắt Lặp đi lặp lại hoạt động trên các bộ và danh sách tốt:Slicing một chuỗi liên tục

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

Nhưng với chuỗi:

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

Điều kỳ lạ ở đây là, khi tôi cố gắng lặp đi lặp lại cắt qua chuỗi biến tên , không có gì ở số name[0][0] hoặc name[0][-1], vậy tại sao hiển thị "u"?

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

Và nếu có gì đó ở số name[0][0] thì tại sao không có trên các chỉ mục khác?

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

Cắt lặp lại không phải là tính năng của danh sách. Hãy thử '[1,2,3] [0] [0]'. –

+0

Bởi vì khi lập chỉ mục (không cắt thực sự từ các ví dụ tôi thu thập) các chuỗi bạn nhận được chuỗi - một ký tự là một chuỗi có độ dài một trong python. Loại không thay đổi. Không phải trường hợp với bộ/danh sách. – gorlum0

Trả lời

12

Chuỗi là một chuỗi. Chuỗi của một ký tự vẫn là một chuỗi với một phần tử. Vì vậy, với một chuỗi bạn có thể làm name[0][0][0][0]... và nó sẽ hoạt động tốt. Cùng với chỉ số -1, trả về yếu tố cuối cùng của một chuỗi:

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

name[0][1] rõ ràng là thất bại vì chỉ có một phần tử trong chuỗi name[0].

0

Để thêm vào câu trả lời của @ Roman. Tôi nghĩ rằng bạn đang ở dưới ấn tượng rằng name[0] sẽ trả lại một số loại char. Nhưng nó không. Điều gì xảy ra là name[0] trả về một chuỗi có độ dài 1. vì vậy không có vấn đề bao nhiêu lần bạn liên tục lập chỉ mục một chuỗi không có sản phẩm nào với 0, nó luôn luôn trả về giống nhau.

Các vấn đề liên quan