python中的切片表示法-需要对代码片段进行说明吗

python中的切片表示法-需要对代码片段进行说明吗,python,Python,我是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

我是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]
您可以将其理解为“将
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]

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]: ""

| h | e | l | l | o |这是否直接修改底层列表对象?如果是这样,那么你的等价性就不完全等价了。也许值得一提。无论如何,这是理解的好帮手。
| h | e | l | l | o |    <-- string "hello"
0   1   2   3   4   5    <-- slice positions
^---^                    <-- slice [0:1]: "h"
    ^                    <-- slice [1:1]: ""