Powiedzmy, że mam ciąg składający się z x nieznanych znaków. Jak mogłem dostać char nr. 13 lub char nr. x-14?
91
Najpierw upewnij się, że wymagana liczba jest prawidłowym indeksem dla ciągu od początku lub końca, a następnie możesz po prostu użyć notacji z indeksem tablicy. użyj, len(s)
aby uzyskać długość łańcucha
>>> 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]
może działać, ales[-6]
narzekałby na błąd indeksu poza zakresem? Tak ciekawi implementacji w obiekcie string w Pythonie.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Teraz dla dodatnich zakresów indeksów dla x wynosi od 0 do 44 (tj. Długość - 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'
W przypadku indeksu ujemnego zakres indeksu wynosi od -1 do -45
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Dla indeksu ujemnego, ujemnego [długość -1], czyli ostatnia ważna wartość dodatniego indeksu da drugi element listy, gdy lista jest czytana w odwrotnej kolejności,
In [8]: x[-44] Out[8]: 'n'
Inne przykłady indeksu,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
źródło
Poprzednie odpowiedzi obejmują
ASCII character
pewien indeks.Uzyskanie
Unicode character
at określonego indeksu w Pythonie 2 jest trochę kłopotliwe .Np. Z
s = '한국中国にっぽん'
którym jest<type 'str'>
,__getitem__
, np.,s[i]
nie prowadzi cię tam, gdzie chcesz. Wypluje coś jak�
. (Wiele znaków Unicode ma więcej niż 1 bajt, ale__getitem__
w Pythonie 2 jest zwiększana o 1 bajt).W tym przypadku Pythona 2 możesz rozwiązać problem poprzez dekodowanie:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
źródło
Python.org ma doskonały punkt na sznurkach tutaj . Przewiń w dół do miejsca, w którym jest napisane „notacja plasterka”.
źródło
Inne zalecane ćwiczenie ułatwiające zrozumienie list i indeksów:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
źródło
Powinno to dodatkowo wyjaśnić kwestie:
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')
Wejście 3 Wyjście m
Wejście -3 Wyjście str
źródło
Myślę, że jest to bardziej jasne niż opisywanie tego słowami
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
źródło