我是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]
答案 0 :(得分: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]
答案 1 :(得分: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]: ""