我是 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]
我是 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
# 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]
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]: ""