【发布时间】:2012-05-24 07:07:28
【问题描述】:
Python 文档说对列表进行切片会返回一个新列表。
现在,如果返回“新”列表,我有以下与“分配给切片”相关的问题
a = [1, 2, 3]
a[0:2] = [4, 5]
print a
现在的输出是:
[4, 5, 3]
- 返回的东西怎么会出现在表达式的左侧?
- 是的,我阅读了文档,它说这是可能的,既然切片列表返回一个“新”列表,为什么要修改原始列表?我无法理解其背后的机制。
【问题讨论】:
-
@Mark Longair 对不起,我认为只有代码应该被格式化而不是输出
-
你知道
a[0] = 4会做什么吗? -
@KartikAnand Slice assignment 是一种特殊情况,不会创建新列表。在
=的左侧创建一个没有名称绑定的对象是没有意义的,因此python 不会将其作为无效语法丢弃,而是将其变成更像您期望的东西。由于 python 没有引用,所以让切片的结果更改原始列表是行不通的。你得到一个副本。如果您提供了有关您的应用程序的更多信息,我们可能能够更好地帮助您以“pythonic”的方式做事。 :) -
@Darthfett 我现在没有在开发任何应用程序,而是在开始动手之前自学 python :)