Причина этого заключается в том, что при попытке удалить l
(что составляет None
) из l1
, remove(l)
проходит через массив и проверяет, равен ли каждый элемент l
. Как только он найдет этот элемент, он удалит его из списка. При выполнении сравнения он встречает a
и проверяет, истинно ли a == None
. Это создает массив логических значений с указанием того, имеет ли каждый элемент l
значение None. Когда вы используете это в операторе if, становится неясным, истинно оно или нет.
Вместо этого используйте
l1 = [l for l in l1 if not type(l) == type(None)]
, чтобы отфильтровать все None
в вашем списке.