python - 所有切片操作都返回一个新列表?

标签 python python-2.7 slice

在 Python 教程中,据说“所有切片操作都会返回一个包含所请求元素的新列表”。

>>>a = ['spam', 'eggs', 100, 1234]
>>>a[0:2] = [1, 12]
>>> a
[1, 12, 100, 1234]

如果所有的切片操作都返回一个新的列表,那么这个例子中的列表a是如何改变的呢?似乎只有右侧的切片操作返回一个新列表。

更新

我的意思是 a[:] 在 Python 中到底是什么,对新列表的引用 或对列表 a引用> 或其他任何东西。我感兴趣的是基本级别的实现,而不是行为。

最佳答案

这是切片:

b = a[0:2]

这是切片赋值:

a[0:2] = b

它们是不同的。后者会将 aslice 部分替换为 b 的值。它们看起来非常相似,但用途不同。

关于python - 所有切片操作都返回一个新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422696/

相关文章:

python lxml 3.3.5 - 加载代码时出错 - "ValueError: lxml.etree._Element has the wrong size, try recompiling"

python pandas - 将列除以另一列

arrays - 如何将 byte slice 段 (&[u8]) 的缓冲区转换为整数?

slice - Frama-C 中的条件切片

javascript - 动态切片小数点数字

python - 将 ImageMagick 与 python 结合使用。 (在 linux 系统上)

python - 替换密文中的字母

用于替换文本中未编码的&符号的 Python 正则表达式

python - cgi python 脚本似乎没有从 html 表单接收上传的文件

python + 写入文件的分号写在下一行