Python 程式碼閱讀合集介紹:為什麼不推薦Python初學者直接看專案原始碼
本篇閱讀的程式碼實現了將一個列表向左或向右偏移指定位數的功能。
本篇閱讀的程式碼片段來自於30-seconds-of-python。
offset
def offset(lst, offset):
return lst[offset:] + lst[:offset]
# EXAMPLES
offset([1, 2, 3, 4, 5], 2) # [3, 4, 5, 1, 2]
offset([1, 2, 3, 4, 5], -2) # [4, 5, 1, 2, 3]
offset
函式接收一個列表lst
和一個偏移量offset
,返回根據偏移量offset
偏移後的列表。當偏移量為正的時候,向左移動;當偏移量為負的時候,向右移動。
函式使用列表的切片功能,將原列表根據偏移量分成兩個新列表,並將其按照新的順序組合成偏移後的新列表。
當offset
為正時,lst[offset:]
表示從下標offset
開始,到列表結尾的切片;lst[:offset]
表示從列表開頭,到下標為offset
前一個元素的切片。因為列表下標是從0
開始計算的,所以列表前offset
個元素移動到了列表的末尾,實現了列表向左移動offset
個位數。
當offset
為負時,lst[offset:]
表示從列表結尾倒數第offset
個元素開始,到列表結尾的切片;lst[:offset]
表示從列表開頭,到從列表結尾倒數第offset
個元素的前一個元素的切片。也就是說當offset
為負時,代表從列表結尾倒數第offset
個元素,其他和offset
為正時相同。所以列表最後offset
個元素移動到了列表的開頭,實現了列表向左移動offset
個位數。