Добавление индекса субъекта цикла For в Python

Итак, я делаю программу, которая переписывает предложение как индексы всех уникальных слов в предложении (например, предложение «быстрая коричневая лиса коричневая лиса» будет переписано как «12323»). Вот что у меня есть до сих пор;

sentence=input("please input your sentence")
sentence=sentence.split(" ")
unique=[]
positions=[]
print(sentence)
for i in sentence:
    if i in (unique):
        print(" the item " + i + " has been repeated")
        ind = i.index(i)
        positions.append(ind)
    else:
        unique.append(i)
print(unique)
print(positions)  

Я хочу получить индекс «i» и добавить его в список «позиции», но когда я запускаю приведенный выше код с предложением «быстрая коричневая лиса коричневая лиса», я получаю этот вывод для «позиций»;

[0, 0]

Результат, который я хочу, будет выглядеть примерно так;

[2, 3]

Кажется, такая простая проблема, но для жизни я не могу понять это. Встроенная функция «enumerate» не подходит для решения проблемы, поскольку она делает так, что «i» никогда не будет найдено в «уникальном» и, следовательно, «позиции» будут пустыми.


person Community    schedule 30.03.2016    source источник
comment
Вам нужно вызвать встроенный метод, используя соответствующие параметры, чтобы получить индекс нужного уникального слова. Проверьте этот индекс строк.   -  person formatkaka    schedule 30.03.2016


Ответы (2)


Изменение i.index(i) sentence.index(i) исправляет ваш код:

sentence="quick brown fox brown fox" #input("please input your sentence")
sentence=sentence.split(" ")
unique=[]
positions=[]
print(sentence)
for i in sentence:
    if i in (unique):
        print(" the item " + i + " has been repeated")
        ind = sentence.index(i)
        positions.append(ind)
    else:
        unique.append(i)
print(unique)
print(positions) 

Обратите внимание, что вывод равен [1,2] вместо желаемого [2,3] из-за соглашения Python о запуске массивов с 0. Если вы хотите [2,3] в качестве ответа, вы можете просто установить positions = positions + 1

person Alessandro    schedule 30.03.2016

Хорошо, ребята, спасибо за ваш вклад, но я нашел невероятно простое решение:

sentence = input("Please input your sentence: ")
sentence = sentence.slpit(" ")

for i in sentence:
    print(sentence.index(i)+1)

Вывод для предложения «быстрая коричневая лиса коричневая лиса»:

1
2
3
2
3

Это именно то, что мне было нужно.

person Community    schedule 31.03.2016