如何执行 Python 中的以下?

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

实质上是︰

  1. 用空字符串替换所有 Nones,然后
  2. 执行函数。
2010-11-23 19:56:44
问题评论:

可能的重复项的是否可以使用 python 列表理解中的其他?

回答:

您完全可以实现,它只是排序的问题︰

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

注意这实际使用不同的语言构造中,一个条件表达式,其本身不是理解语法,而if在之后的一部分for…in是列表中包含的一部分,用来筛选器元素 iterable 来源。

请注意,如果其他/这里是现在"三元运算符"语法和不是列表理解语法。

有了 OP 的前一个问题,@Adam 的评语是非常重要 !

那为什么我更喜欢将三元运算符放在方括号内,将更加清晰,它是只是常规表达式,不理解。

因此这一轮是"中列表中我写如果之前再为我必须添加 else 部分太压缩"。因为如果我l = [ 2, 3, 4, 5]然后[x if x % 2 == 0 for x in l]而使错误[x if x % 2 == 0 else 200 for x in l]工作。是的我知道我应该写其进行过滤[ x for x in l if x % 2 == 0]抱歉为 botheration。感谢您的回答。

Python 文档提及三元运算符请注意,它需要其他的或者它不起作用。

一种方法︰

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 内联。

这也是很好的 (或许是唯一的) 技术时必须处理可能出现的异常,if表达式或代码中使用它或elses 语句块。已接受的答案是简单的用例中的显示效果会更好。

这是比使用它的列表理解变得容易得多。

下面是另一个说明性的示例︰

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

它利用了这一事实,if i计算结果为False 0并为True函数range()所生成的所有其他值。因此列表理解计算,如下所示︰

>>> ["ha" if i else "Ha" for i in range(3)]
['Ha', 'ha', 'ha']
内容来源于Stack Overflow if/else in Python's list comprehension?
请输入您的翻译

if/else in Python's list comprehension?

确认取消