@Nazarius

Как узнать индекс слова в строке если они повторяются?

Пример строки:
TEXT = """
The Zen of Python, by Tim Peters
1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
"""


Пример конечного вывода:
TEXT_WORDS = [
        ('the', 1), ('zen', 5), ('of', 9), ('python', 12), ('by', 20),
        ('tim', 23), ('peters', 27), ('beautiful', 37), ('is', 47),
        ('better', 50), ('than', 57), ('ugly', 62), ('explicit', 71),
        ('is', 80), ('better', 83), ('than', 90), ('implicit', 95),
        ('simple', 108), ('is', 115), ('better', 118), ('than', 125),
        ('complex', 130), ('complex', 142), ('is', 150), ('better', 153),
        ('than', 160), ('complicated', 165),
    ]

Я делал через через кортежи и метод index(), но если есть повторы то выводиться ('is', 47) и так 4 раза(потому что в тексте 4 встречается слово "is" )
Пример моего кода:
TEXT_WORDS = []
    for word in TEXT.split():
        r = (word, TEXT.index(word))
        TEXT_WORDS.append(r)
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Вторым параметром метод index позволяет указать, с какой позиции надо начинать поиск. Указывайте последний результат + длину последнего слова:

TEXT_WORDS = []
index = 0
for word in TEXT.split():
  index = TEXT.index(word, index)
  TEXT_WORDS.append((word, index))
  index += len(word)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IDzone-x
@IDzone-x
Учу программирование
def get_indices(lst, el):
    return [i for i in range(len(lst)) if lst[i] == el]
    
    
print(get_indices([1, 5, 5, 2, 7], 7))

Возьмите на заметку етот код он возвращает индексы всех вхождений в второго аргумента. Думаю вы сможете переделать эво под свои нужды).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
28 сент. 2020, в 00:10
15000 руб./за проект
27 сент. 2020, в 21:54
15000 руб./за проект