簡體   English   中英

關於Python的切片表示法

[英]Regarding Python's slice notation

這行代碼

print [0, 1, 2, 3, 4][0:1:1]

返回[0]

但是,以下代碼行:

print [0, 1, 2, 3, 4][0:0:1]

返回[]

為什么是這樣? 基於這個Explain Python的切片表示法 ,我的理解是格式應該是:

a[start:end:step] # start through not past end, by step

那么[0, 1, 2, 3, 4][0:0:1]在第0個值開始和結束,因此返回[0]

切片的“結束”索引始終從結果中排除 ; 即, listy[start:end]返回所有listy[i] ,其中start <= i < end (注意使用<而不是<= )。 因為沒有數字i使得0 <= i < 0listy[0:0:anything]將始終是空列表(或錯誤)。

Python的切片表示法中的結束索引是獨占的。 切片[n:m]將返回索引為> = n且<m的每個元素。

為了簡化一些事情,請在沒有步驟的情況下嘗試(當步長值為1時不需要):

>>> a = [0, 1, 2, 3, 4]
>>> a[0:1]
[0]
>>> a[0:0]
[]

作為一般規則,切片中的元素數等於切片的起始索引減去切片的結束索引。 即,切片[n:m]將返回mn個元素。 這與[0:1]返回的一個元素(1-0)和[0:0]返回的零元素(0-0)一致。

(注意,如果任何一個切片索引超出了數組的大小,則不是這樣。)

有關切片索引如何工作的精確可視化,請在http://docs.python.org/2/tutorial/introduction.html上搜索“記住切片如何工作的一種方法”。

注意是[0:0:1]而不是[0:1:1]

所以:

start = 0
end = 0
step = 1

切片[start:end:step]意味着它將返回startend - 1之間的值end - 1具有特定step ,因此對於您的示例:

...[0:0:1]

介於0和-1之間的值,因此它不會返回任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM