2016-12-04 68 views
-1

參考30 Python Language features負面切片和索引列表中的用例是什麼?

1.6列表洗淨切片,用負索引:

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> a[-4:-2] 
[7, 8] 
  • 哪裏是負切片和索引最常用的?
  • 是否有這樣的情況,它甚至是不可或缺的,因此它必須作爲語言特徵存在?
+2

你願意寫'a [len(a)-4:len(a)-2]'嗎? – vaultah

+2

它爲沒有固定長度並且您想要最後一個元素的列表提供更清晰的語法。 – JulienD

+0

@vaultah,不,我寧願寫一個[7:8] .. oops [7:9] – goldcode

回答

2

一個很常見的情形,其中片的負面屬性是很方便的倒車序列,即:

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
a[::-1] 

其中slice具有負step值。

另一種同樣常見的方法是抓取a[-1]序列的最後一個元素。如果沒有負面索引,你會使用醜陋的a[len(a)-1]代碼;現在,您可以簡單地讓Python將len添加到幕後值,而不用擔心。

Python慷慨地提供了這種便利,至少版本1.4(我最常見的最古老的文檔);我懷疑這是「不可或缺」的地方,它只是讓Python更友好一點的許多事情之一。

+0

只是想我會加上這一點,你也可以從末尾用基於0的索引來計算,使用'〜'運算符,它給出了一個整數的讚美。所以列表的最後一個元素是'a [〜0]',倒數第二個元素是'a [〜1]'等等。 –

+0

@CurtisLus更確信,我認爲我們都同意使用倒置運算符只是一個可怕的替代:-) –

+0

不知道我會同意這是可怕的,它有它的用途。就像標準的基於循環的迴文檢查看起來更像'string [i] == string [〜i]'而不是'string [i] == string [-i-1]'。 –

相關問題