我試圖弄清楚如何定義一個slice能夠回傳第一個元素的元素。
>>> x = list(range(100))
>>> s = slice(91, 100, 2)
>>> x[s]
[91, 93, 95, 97, 99] # Highest works fine.
>>> s = slice(10, -1, -2)
>>> x[s]
[] # Nope
>>> s = slice(10, 0, -2)
>>> x[s]
[10, 8, 6, 4, 2] # No zero
>>> 0 in x
True
uj5u.com熱心網友回復:
你必須在None這里使用。你想要x[10::-2]的切片等價物是:
s = slice(10, None, -2)
x[s]
# [10, 8, 6, 4, 2, 0]
閱讀此答案以完全了解 Python 中的切片是如何作業的:Understanding slice notation
讓我們slice(start, stop, step)來解釋為什么你的其他例子不起作用
s = slice(10, 0, -2)不包括0ie 第一個元素,因為在切片中我們取直到stop - 1.slice(10, -1, -2)使用負值時,切片的作業方式不同。負值表示串列后面的值。所以,上面的切片將是slice(10, len(x)-1, -2).s = slice(91, 100, 2)作業是因為99的索引是99(x.index(99)->99) 不是100。99低于100因此它被包括在內。slice(91, 9999, 2)將給出[91, 93, 95, 97, 99]比len(x)替換為更大的值len(x)。更多相關資訊為什么索引超出范圍的子字串切片會起作用?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/399779.html
