@AlexMine
Учусь

Как правильно поступить если False == 0?

Здравствуйте, столкнулся с таким вопросом:
a = [False, True, 0, 1, 2, 3]
b = [a.pop(i) for i,v in enumerate(a) if v == 0]

print(b)
[False, 0]

Как правильно поступить, мне нужно только 0 из списка удалить, а получается так, что False python тоже при сравнении считает 0.
Как быть?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Не нужно изменять итерируемый список. И не нужно изменять состояние во включениях.
b = [v for v in a if v is not 0]
Ответ написан
провести все к String и потом сделать проверку. не ?
Ответ написан
alternativshik
@alternativshik
1 вариант if v is 0
2 b = list(filter(lambda x: x is not 0, a))
Ответ написан
Комментировать
welcome32
@welcome32
Backend Python developer
Проверяйте тип объекта. Тип данных False - bool, а у 0 - int
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы