Katakanlah saya memiliki string yang terdiri dari x karakter yang tidak diketahui. Bagaimana saya bisa mendapatkan char nr. 13 atau char nr. x-14?
91
Pertama pastikan nomor yang diperlukan adalah indeks yang valid untuk string dari awal atau akhir, lalu Anda cukup menggunakan notasi subskrip array. digunakan len(s)
untuk mendapatkan panjang string
>>> 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
>>>
s[-5]
bisa bekerja, tetapis[-6]
akan mengeluh kesalahan indeks di luar jangkauan? Sangat penasaran dengan implementasi objek string dengan Python.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Sekarang, Untuk rentang indeks positif untuk x adalah dari 0 hingga 44 (yaitu panjang - 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'
Untuk indeks negatif, indeks berkisar dari -1 hingga -45
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Untuk indeks negatif, negatif [panjang -1] yaitu nilai terakhir yang valid dari indeks positif akan memberikan elemen daftar kedua karena daftar dibaca dalam urutan terbalik,
In [8]: x[-44] Out[8]: 'n'
Lainnya, contoh indeks,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
sumber
Jawaban sebelumnya mencakup tentang
ASCII character
indeks tertentu.Agak merepotkan untuk mendapatkan
Unicode character
indeks tertentu dengan Python 2.Misalnya, dengan
s = '한국中国にっぽん'
yang mana<type 'str'>
,__getitem__
, misalnya,s[i]
tidak membawa Anda ke tempat yang Anda inginkan. Ini akan memuntahkan sesuatu seperti�
. (Banyak karakter Unicode lebih dari 1 byte tetapi__getitem__
di Python 2 bertambah 1 byte.)Dalam kasus Python 2 ini, Anda dapat menyelesaikan masalah dengan mendekode:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
sumber
Python.org memiliki bagian yang sangat bagus tentang string di sini . Gulir ke bawah di mana dikatakan "notasi irisan".
sumber
Latihan lain yang direkomendasikan untuk memahami daftar dan indeks:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
sumber
Ini selanjutnya harus memperjelas poin:
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')
Masukan 3 Keluaran m
Input -3 Output hlm
sumber
Saya pikir ini lebih jelas daripada mendeskripsikannya dengan kata-kata
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
sumber