Почему 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]))

какая погода?

Другие вопросы по тегам