Python中L[a:b] = L[c:d]是否优化为避免创建临时列表?
Python切片赋值的临时列表创建疑问
我在Python官方文档中找不到相关说明:执行L[a:b] = L[c:d]时,是否会在对L进行原地修改前为L[c:d]创建一个临时列表。
Python教程中提到:
所有切片操作都会返回一个包含请求元素的新列表。
而列表官方文档并未说明切片赋值给另一个切片时是否存在优化。因此我想了解:
- 是否存在官方规定的行为?
- 该行为具体是什么?
需要说明的是,不能以L[c:d]先于L[a:b]求值为由来回答这个问题(即便该说法成立,也值得怀疑,因为许多编程语言存在违反常规规则的特殊情况)。这是因为这种说法仅能说明表观上的执行顺序,无法说明实际的执行机制!既然合格的程序员都会使用合适的循环(正向或反向)来原地修改L,且不会创建任何新列表,那么也没有理由认为语言设计者没有官方要求这种切片赋值的特殊情况采用该实现方式。
内容的提问来源于stack exchange,提问作者user29120650
相关产品推荐
相关产品推荐

