我是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我已經添加了這個*,我希望這是可以理解的/真實的... –