a = "programming in python is Fun"
a.find("i") = 8
Он возвращает индекс первого вхождения "i"
в a.
Можно ли найти индекс второго "i"
?
a = "programming in python is Fun"
a.find("i") = 8
Он возвращает индекс первого вхождения "i"
в a.
Можно ли найти индекс второго "i"
?
find()
также принимает необязательный начальный индекс, который вы можете использовать как:
a = "programming in python is Fun"
first = a.find('i')
print(a.find('i',first+1))
Вы можете использовать enumerate()
с понимание списка, чтобы найти все индексы следующим образом:
s = "programming in python is Fun"
my_char = "i"
my_indexes = [i for i, x in enumerate(s) if x == my_char]
# where `my_indexes` holds:
# [8, 12, 22]
Здесь my_char
— это символ, индекс которого вы хотите найти. А my_indexes
— это список, содержащий индексы каждого случая, когда my_char
встречается в строке. Дополнительные сведения см. в enumerate()
документе.
Следовательно, вы можете получить доступ к индексу второго вхождения как:
>>> my_indexes[1]
12
.find()
на бумаге, но алгоритм лучше имхо. Если позволите, удалите это , x in enumerate
, ì for i in s
вполне подойдет, строка — это просто список символов.
- person Loïc; 03.02.2021
Вы также можете использовать numpy
следующим образом:
import numpy as np
a = "programming in python is Fun"
x = np.frombuffer(a.encode(), dtype=np.uint8)
np.where(x == ord('i')) # (array([ 8, 12, 22]),)
Используя np.frombuffer
, переинтерпретируйте str как символьный буфер, а затем используя < a href="https://numpy.org/doc/stable/reference/generated/numpy.where.html" rel="nofollow noreferrer">np.where
вернет все индексы, которые будут соответствовать вашему персонажу интересует (или, точнее, целое число, представляющее символ Unicode, используя ord
< /а>).