если 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] >>> 
  • Разница между del, удаление и поп в списках
  • Вычитание по списку множеств
  • Прочитайте файл .txt и поместите элементы в список (Python)
  • Вычитание значения из всех элементов 2D-списка в python
  • Печатать список без скобок в одной строке
  • Списки Python: индексы heapq.nlargest с повторяющимися значениями в списке
  • Преобразование среднего значения значений списка Python в другой список
  • Ошибка синтаксиса Python - In и Not In List
  • Python - лучший язык программирования в мире.