以下代碼包含最後一個數字。列表問題中的步驟,Python初學者
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[::3]
[1, 4, 7, 10]
爲什麼不包括最後的數字2,比如10,8,6,4,2?
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:1:-2]
[10, 8, 6, 4]
以下代碼包含最後一個數字。列表問題中的步驟,Python初學者
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[::3]
[1, 4, 7, 10]
爲什麼不包括最後的數字2,比如10,8,6,4,2?
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:1:-2]
[10, 8, 6, 4]
似乎slice運算符不包含第二個參數。在其他詞,你1
應該是一個0
:
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[:1:-2]
[10, 8, 6, 4]
>>> numbers[:0:-2]
[10, 8, 6, 4, 2]
希望幫助:)
如需進一步信息,請參閱注5 here。
::正在用N個步驟遍歷列表。所以它是1,然後是4,等等。如果你想用2向後走,你想要[:: - 2]
因爲切片排除範圍中的第二個數字。 a[1:4]
獲取元素1,2和3.同樣,a[10:6:-1]
獲取元素10,9,8和7,但不是6.
數字[10:6:-1]輸出10,9,8不是7. – shin 2010-05-29 11:47:42
我指的是位置10到7中的某些任意數組中的元素,'a'。 – 2010-05-29 12:37:12
Python在遵循序列範圍較低包含,較高排除的模式方面非常一致。也就是說,如果你說範圍(1,5) - > [1,2,3,4]。包含較低的指數,排除上限。這對各種各樣的off-by-one和fencepost錯誤有很大的幫助。請參閱wikipedia以瞭解這些問題的簡要說明。
爲什麼不用[:: - 2]代替? – wvd 2010-05-29 11:41:26
當然,這也有效,但我的觀點是要證明「1」這個論點是個問題。另外,像「Python將在缺少參數時使用0」這樣的通用語句可能會很麻煩。 – 2010-05-29 15:05:24