Задать вопрос
@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.
Как быть?
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы