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個位數。
