Другие уже указали лучшие решения. Я хочу показать вам, почему список не пуст после запуска вашего кода. Так как ваша ispalindrome()
функция никогда не вернет True
из-за «проблемы перевода строки», упомянутой в других ответах, ваш код будет вызывать wordlist.remove(x)
для каждого элемента. Так почему же список не пуст в конце?
Потому что вы изменяете список во время его перебора. Учтите следующее:
>>> l = [1,2,3,4,5,6]
>>> for i in l:
... l.remove(i)
...
>>> l
[2, 4, 6]
Когда вы удаляете 1
, остальные элементы перемещаются на один шаг вверх, поэтому теперь l[0]
равно 2
. Счетчик итераций, однако, продвинулся и будет смотреть l[1]
на следующей итерации, поэтому удалит 3
и т. Д.
Таким образом, ваш код удаляет половину записей. Мораль: никогда не изменяйте список во время итерации по нему (если вы точно не знаете, что делаете:)).