3

我是 python 新手,在阅读切片符号时,我遇到了以下代码片段。我能够在非常简单的示例中理解和使用它,但是在以下示例中我无法掌握它的用法。任何解释都会有帮助!

>>> a = [1,2]
>>> a[1:1] = [3,4,5]
>>> print a
[1, 3, 4, 5, 2]

>>> a = [1,2]
>>> a[0:1] = [3,4,5]
>>> print a
[3, 4, 5, 2]
4

2 回答 2

6
a[n:m] = b
# is essentially* equivalent to
a = a[:n] + b + a[m:]

你可以把它读作“替换a[n:m]b”(因为a = a[:n] + a[n:m] + a[m:])。

*实际上,切片会在原地改变列表(即id(a)保持不变),这通常会更可取(而设置会在不同的内存位置a=创建我们的新列表)。a

所以在你的例子中:

a = [1,2]
#a[1:1] = [3,4,5]
a = a[:1] + [3,4,5] + a[1:]
#   [1]               [2]
[1, 3, 4, 5, 2]

a = [1,2]
#a[0:1] = [3,4,5]
a = a[:0] + [3,4,5] + a[1:]
#   []                [2]
[3, 4, 5, 2]
于 2012-09-24T11:16:04.517 回答
0

a[1:1]是列表中第一个和第二个元素之间位置的空切片。
所以a[1:1] = [3,4,5]意味着“3,4,5在列表的第一个元素之后插入元素”。

a[0:1]是列表中从第一个元素到(但不包括)第二个元素的切片。
所以a[0:1] = [3,4,5]意思是“用元素替换列表的第一个元素3,4,5”。

也许这种可视化有助于:

| h | e | l | l | o |    <-- string "hello"
0   1   2   3   4   5    <-- slice positions
^---^                    <-- slice [0:1]: "h"
    ^                    <-- slice [1:1]: ""
于 2012-09-24T11:16:37.590 回答