if i!=0 in list comprehension gives syntax error

后端 未结 3 379
野的像风
野的像风 2021-01-19 04:14

This question is very much like: if/else in Python's list comprehension? and Simple syntax error in Python if else dict comprehension . But still i dont understand what

相关标签:
3条回答
  • 2021-01-19 04:44

    Move the if to the end. Refer to The Python Docs entry on List Comprehensions.

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

    If you were looking for a conditional expression, you could do something like @Martijn pointed out,

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

    If you just want the non zero entities, you could also filter(...) your list.

    >>> filter(None, [1, 2, 0, 0, 4, 5, 6])
    [1, 2, 4, 5, 6]
    
    0 讨论(0)
  • 2021-01-19 04:54

    The if predicate comes after the specification of the for i in range(2) in a list comprehension. You can also have arbitrary number of ifs.

    0 讨论(0)
  • 2021-01-19 04:57

    Switch the if i!=0 and for i in range(2) parts:

    >>> [i for i in range(2) if i!=0]
    [1]
    >>>
    
    0 讨论(0)
提交回复
热议问题