если i! = 0 в понимании списка дает синтаксическую ошибку

Этот вопрос очень похож: if / else в понимании списка Python? и Простая синтаксическая ошибка в Python, если в противном случае понимается dict . Но все же я не понимаю, какую ошибку я здесь делаю:

[i if i!=0 for i in range(2)] ^ syntax error 

Мне нужны только записи в списке, которые не равны нулю для разреженности.

3 Solutions collect form web for “если i! = 0 в понимании списка дает синтаксическую ошибку”

Переместите if до конца. Обратитесь к разделу «Документы Python Docs» в «List List» .

 >>> [i for i in range(2) if i!=0] # Or [i for i in range(2) if i] [1] 

Если вы искали условное выражение , вы могли бы сделать что-то вроде @Martijn,

 >>> [i if i!=0 else -1 for i in range(2)] [-1, 1] 

Если вам просто нужны ненулевые объекты, вы можете также filter(...) ваш список.

 >>> filter(None, [1, 2, 0, 0, 4, 5, 6]) [1, 2, 4, 5, 6] 

Предикат if появляется после спецификации for i in range(2) в понимании списка. Вы также можете иметь произвольное число if .

Переключите if i!=0 и for i in range(2) :

 >>> [i for i in range(2) if i!=0] [1] >>> 
  • Равномерно распределить список в python
  • Почему я не могу присоединиться к этому кортежу в Python?
  • Как удалить элементы списка в цикле for в Python?
  • Сравнение двух списков координат в python и использование значений координат для назначения значений
  • Как группировать элементы списка в кортеж?
  • Самый быстрый способ проверить, существует ли значение в списке
  • Как получить список индексов ненулевых элементов в списке?
  • Как создать двух циклов для представления в python
  • Как сгладить кортеж в python
  • Как удалить элемент из списка по индексу в Python?
  • Получить имя списка
  • Python - лучший язык программирования в мире.