列表中的if语句

2024-04-26 14:50:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

如何获得[1,2,3,4,"hello"]的列表理解?你知道吗


Tags: inhello列表forifcellreplacerow
2条回答

您应该使用conditional expression

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

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

如果test\u expression else false\u expression,则条件表达式使用形式true\u expression;它总是生成一个值。你知道吗

我简化了一点表达式;如果您要用"hello"替换" ",您也可以返回"hello"。你知道吗

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

当在for的末尾使用if时,它会限制考虑哪些项,因此版本只返回一个项,因为源列表中只有一个项与条件匹配。你知道吗

同样在这种情况下,您不需要使用replace,您可以只使用"hello" if cell==" ",但是如果您有多个要操作的项,您可以使用此表单。你知道吗

相关问题 更多 >