if / else在Python的列表理解?

我如何在Python中执行以下操作?

row = [unicode(x.strip()) for x in row if x is not None else '']

主要有:

  • 用空字符串替换所有的Nones,然后
  • 执行功能。

  • 你完全可以这么做,这只是一个订购问题:

    [ unicode(x.strip()) if x is not None else '' for x in row ]
    

    注意,这实际上使用不同的语言结构,有条件的表达,这本身是不是理解语法的一部分,而if之后for…in是列表内涵的一部分,用来过滤从源头迭代元素。

    条件表达式可用于所有需要根据某些条件在两个表达式值之间进行选择的情况。 这与三元运算符相同?:存在于其他语言中。 例如:

    value = 123
    print(value, 'is', 'even' if value % 2 == 0 else 'odd')
    

    单程:

    def change(f):
        if f is None:
            return unicode(f.strip())
        else:
            return ''
    
    row = [change(x) for x in row]
    

    虽然那么你有:

    row = map(change, row)
    

    或者你可以使用lambda内联。


    这是另一个说明性的例子:

    >>> print(", ".join(["ha" if i else "Ha" for i in range(3)]) + "!")
    Ha, ha, ha!
    

    它利用了这样一个事实,即if i评估为False0并且为由函数range()生成的所有其他值评估为True 。 因此,列表理解评估如下:

    >>> ["ha" if i else "Ha" for i in range(3)]
    ['Ha', 'ha', 'ha']
    
    链接地址: http://www.djcxy.com/p/4535.html

    上一篇: if/else in Python's list comprehension?

    下一篇: Peak detection in a 2D array