2012-01-13 26 views

Trả lời

80

Trước tiên hãy đảm bảo số được yêu cầu là chỉ số hợp lệ cho chuỗi từ đầu hoặc cuối, sau đó bạn có thể chỉ cần sử dụng ký hiệu chỉ số mảng. sử dụng len(s) để có được chuỗi dài

>>> s = "python" 
>>> s[3] 
'h' 
>>> s[6] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
>>> s[0] 
'p' 
>>> s[-1] 
'n' 
>>> s[-6] 
'p' 
>>> s[-7] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
>>> 
+1

Bạn có thể vượt qua số nguyên âm –

+0

@AviramSegal Cảm ơn bạn đã sửa chữa, Có, chúng tôi có thể, nhưng họ cũng nên ở trong giới hạn của độ dài chuỗi. – DhruvPathak

+1

sau khi bạn chỉnh sửa câu trả lời hay nhất, được bỏ phiếu thay vì xuống :) –

5
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#[email protected]" 
In [2]: len(x) 
Out[2]: 45 

Bây giờ, Đối với dao động chỉ số dương tính với x là 0-44 (tức là chiều dài - 1)

In [3]: x[0] 
Out[3]: 'a' 
In [4]: x[45] 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 

/home/<ipython console> in <module>() 

IndexError: string index out of range 

In [5]: x[44] 
Out[5]: 's' 

Đối với chỉ số Negative, chỉ số dao động từ -1 đến -45

In [6]: x[-1] 
Out[6]: 's' 
In [7]: x[-45] 
Out[7]: 'a 

Đối với chỉ số âm, âm [length -1] tức là giá trị hợp lệ cuối cùng ue chỉ số tích cực sẽ cho yếu tố danh sách thứ hai là danh sách được đọc theo thứ tự ngược,

In [8]: x[-44] 
Out[8]: 'n' 

khác, ví dụ chỉ số của,

In [9]: x[1] 
Out[9]: 'n' 
In [10]: x[-9] 
Out[10]: '7' 
+0

Bạn nên cung cấp một số mô tả bằng lời nói về những gì đang xảy ra, mặc dù câu hỏi có vẻ cơ bản đối với bạn. – Hannele

+0

Cập nhật câu trả lời với một số mô tả, hy vọng nó sẽ giúp :) – avasal

0

này nên làm rõ thêm các điểm:

a = int(raw_input('Enter the index')) 
str1 = 'Example' 
leng = len(str1) 
if (a < (len-1)) and (a > (-len)): 
    print str1[a] 
else: 
    print('Index overflow') 

Nhập 3 Đầu ra m

Nhập -3 Output p

1

Một exersice khuyến khích cho sự hiểu biết danh sách và lập chỉ mục:

L = ['a', 'b', 'c'] 
for index, item in enumerate(L): 
    print index + '\n' + item 

0 
a 
1 
b 
2 
c 
3

Python.org có một phần xuất sắc trên dây here. Cuộn xuống đến nơi nó nói "ký hiệu slice".

0

Câu trả lời trước bao gồm khoảng ASCII character tại một chỉ mục nhất định.

Nó được một chút phiền hà để có được một Unicode character tại một chỉ số nhất định trong Python 2.

Ví dụ, với s = '한국中国にっぽん' đó là <type 'str'>,

__getitem__, ví dụ, s[i], không dẫn bạn đến nơi bạn mong muốn. Nó sẽ nhổ ra semething như . (Nhiều ký tự Unicode hơn 1 byte nhưng __getitem__ bằng Python 2 được tăng lên bởi 1 byte.)

Trong trường hợp Python 2 này, bạn có thể giải quyết vấn đề bằng cách giải mã:

s = '한국中国にっぽん' 
s = s.decode('utf-8') 
for i in range(len(s)): 
    print s[i] 
Các vấn đề liên quan