我是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
[3, 4, 5, 2]
我是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
[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)
保持不变),这通常是最好(在不同的存储位置设置wheras创建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]: ""
这是否直接修改底层列表对象?如果是这样,你的等价性不完全相同。可能值得注意任何一种方式。无论如何,这是理解的好帮手。 – Ben
@本站不错! ...你是对的! –
@Ben我已经添加了这个*,我希望这是可以理解的/真实的... –