Python代碼閱讀(第36篇):列表偏移


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM