Почему Python не удаляет все строки, которые приветствуются из списка?
. Удалить не работает правильно!
Я делаю Ai, и я пытаюсь удалить любые слова, которые являются именем Ai или приветствием! Но он удаляет только первое, что находит, если даже это. Если кто-то знает, что происходит, я бы очень признателен за помощь. Да, и what_person_said_l_wt - токен, введенный пользователем в нижнем регистре (с использованием.lower), просто чтобы вы знали, спасибо, вот мой код:
Static_Greetings = ["hey","hi","hello"]
Name = ["jarvis"]
for word in what_person_said_l_wt:
if word in Static_Greetings or word in Name:
print (word)
what_person_said_l_wt.remove(word)
Результаты
input: hey jarvis what is the weather?
Modified: jarvis what is the weather
Это не удаляет и "Эй", и "Джарвис", чтобы оставить только вопрос: "какая погода?" как и положено!
2 ответа
Вы перебираете список, удаляя из него элементы.
Сделайте копию списка и повторите это. Таким образом, вы все равно можете удалить из исходного списка, сохраняя при этом свою позицию в цикле.
Невозможно изменить список во время итерации. Скорее используйте что-то вроде этого. Это удалит (отфильтрует) слова в статических приветствиях и имени.
Static_Greetings = ["hey","hi","hello"]
Name = ["jarvis"]
what_person_said = 'hey jarvis what is the weather?'
print(' '.join([word for word in what_person_said.split()
if word not in Static_Greetings + Name]))
какая погода?