Python中能否将原地操作与赋值操作合并在一行代码中?
Python中能否将原地操作与赋值合并为一行?
首先要明确:像result = ['a', 'b'].append('c')这种写法得到None,是因为append()是原地修改列表的方法,它的返回值固定为None,所以直接赋值给变量的话,变量只会拿到None。
如果要把“创建列表+原地修改”合并为一行,有两种可行方式:
方式一:使用列表拼接(生成新列表)
这种方式不是原地操作,但能一行得到目标列表,可读性较好:result = ['a', 'b'] + ['c']执行后
result的值为['a', 'b', 'c']。方式二:利用lambda表达式实现原地修改后返回列表
这种写法能模拟“原地修改+赋值”的一行操作,但可读性较差,不推荐日常使用:result = (lambda lst: lst.append('c') or lst)(['a', 'b'])原理是
append()返回None,or运算符会返回后面的lst(修改后的原列表),最终result得到修改后的列表。
不过需要注意:Python代码风格优先强调可读性,分两行的写法(先赋值再调用append())更清晰易懂,除非有特殊场景需求,否则没必要强行合并为一行。
内容的提问来源于stack exchange,提问作者Lukasz Tracewski
相关产品推荐
相关产品推荐

