列表理解中的if语句

时间:2014-05-10 06:58:30

标签: python if-statement list-comprehension

>>> row = [1,2,3,4,"--"]
>>> row = [cell.replace("--","hello") for cell in row if cell == "--"]
>>> row
['hello']

如何通过列表理解获得[1,2,3,4,"hello"]

2 个答案:

答案 0 :(得分:4)

您改为使用conditional expression

["hello" if cell == "--" else cell for cell in row]

这是左侧元素生成表达式的一部分,而不是列表推导语法本身,其中if语句充当过滤器。

条件表达式使用 true_expression形式,如果test_expression,则为false_expression ;它总是产生一个价值。

我简化了表达;如果您"--"替换 "hello",您也可以返回"hello"

答案 1 :(得分:2)

[cell.replace("--","hello") if cell=="--" else cell for cell in row]

if末尾使用for时,它会限制考虑哪些项目,因此该版本只会返回一个项目,因为源列表中只有一个项目符合条件。

同样在这种情况下,您不需要使用replace,而只需使用"hello" if cell=="--",但如果您想要操作多个项目,则可以使用此表单。