使用三元运算符实现列表元素移除是否属于规范用法?
用三元运算符处理列表元素移除是否规范?
先看你给出的代码示例:
>>> a = [1, 2, 3, 4] >>> val = 3 >>> a.remove(val) if val in a else None >>> a >>> [1, 2, 4] >>> val = 10 >>> a.remove(val) if val in a else None >>> a >>> [1, 2, 4]
结论:语法合法,但不符合Python风格规范
- 从语法层面来说,这种写法是合法的:Python允许三元表达式的两个分支执行带副作用的操作(比如修改列表),或者返回
None。 - 但从设计意图和可读性角度,这是不推荐的用法:
- 三元表达式的核心用途是返回一个值,而非执行无返回值的副作用操作(比如调用
list.remove())。把它当成单行条件执行语句,违背了它的设计初衷。 - 这种写法可读性很差,熟悉Python的开发者看到三元表达式时,第一反应是获取某个值,而非执行修改操作,会额外增加理解成本。
- 三元表达式的核心用途是返回一个值,而非执行无返回值的副作用操作(比如调用
更符合Python风格的写法
直接使用普通条件语句,逻辑清晰直白,没有歧义:
a = [1, 2, 3, 4] val = 3 if val in a: a.remove(val)
内容的提问来源于stack exchange,提问作者Bruno Vermeulen
相关产品推荐
相关产品推荐

