日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

5個 Python 切片技巧,讓你的代碼更加優(yōu)雅

 喜歡站在山上 2021-01-31

在Python世界中,有許多小技巧可以對我們的代碼產生很大的影響。特別是對于大型程序,這些小技巧可以使我們的代碼更整潔和優(yōu)雅。

切片操作(slice operator)就是其中的一個。它可以幫助我們優(yōu)雅的從可迭代對象中獲取想要的元素,例如我們有一個如下的列表:

a = [1,2,3,4,5,6]

如果我們想獲取列表 a 的奇數項該怎么寫?

正常來說可以編寫一個包含if-else語句的for循環(huán)語句過濾列表的元素,這個可行,就是多了許多不必要的代碼。

其實這個問題只需要一行代碼就可以解決:

a[::2]

沒有 for 循環(huán),沒有 if-else 語句,只需一行。這就是切片技術。

下面就將介紹5個有用的Python切片技巧。

切片運算符的模板

在探索其用法之前,我們需要了解編寫切片(slice)運算符的模板:

a_list[start:end:step]

如上所示,該操作包含三個參數:

start: 起始索引 (默認值是 0)

end: 結束索引 (默認值是該列表的長度)

step: 步長 (默認值是 1)

這三個參數都是可以選項。

了解了模板之后,現在讓我們看看這5個技巧是如何工作的。

1.獲取列表的前N個或后N個項目

我們再次使用上一個列表作 a 為示例:

a = [1,2,3,4,5,6]

如何獲取前三個項?很簡單:

a[:3] # 輸出: [1, 2, 3]

在上面的代碼中,start 從 0 開始,也就是該參數的默認值,所以我們就寫 end 索引是多少

那如何獲取后三個項目呢? 這里就用到了負數索引:

a[-3:] # 輸出: [4, 5, 6]

眾所周知,大多數編程語言都支持正索引,并且索引從0開始。

但是 Python 是個很特別的語言,它支持負索引。它從 -1 開始,換句話說,-1代表最后一個項目,-2代表倒數第二個項目,依此類推。

因此,當我們需要獲取列表的最后n個項目時,只需通過負索引即可獲取它。

2.取列表的第N個項目

我們可以通過第三個參數步長(step), 更加靈活的處理切片任務,比如獲取列表的奇數項:

a = [1, 2, 3, 4, 5, 6]a[::2] # 輸出 [1, 3, 5]

這里有個常用的小技巧就是通過它翻轉列表:

a = [1, 2, 3, 4, 5, 6]a[::-1] # 輸出 [6, 5, 4, 3, 2, 1]

正步數是從列表頭開始,負步數就是從列表最后開始。

3.淺復制列表

淺表復制的最簡單方法是使用以下切片技巧:

a = [1, 2, 3, 4, 5, 6]b = a[:]b[0]=100print(b) # 輸出 [100, 2, 3, 4, 5, 6]print(a) # 輸出 [1, 2, 3, 4, 5, 6]

4. 一次操作多個列表元素

如果我們需要處理列表中的多個元素,是否必須使用 for 循環(huán)?

并不一定,我們仍然可以通過切片運算符執(zhí)行某些任務,例如分配或刪除而無需for循環(huán)。我們來看一些例子:

一次刪除多個列表元素

a = [1, 2, 3, 4, 5, 6]del a[:2]print(a) # 輸出 [3, 4, 5, 6]

調整列表大小

a = [1, 2, 3, 4, 5, 6]a[:4] = [7,8]print(a) # 輸出 [7, 8, 5, 6]

5.使用切片對象(Slice Object)存儲切片索引

如果我們用相同的索引對許多列表進行切片,那么可能會有太多的數字,即使借助切片技巧,我們的代碼也會變得難看。像下面的代碼

a = [1, 2, 3, 4, 5, 6]b = [3, 4, 5, 6, 7, 8, 9]c = [2, 3, 4, 5, 100, 101, 102]a2 = a[1:5:2]b2 = b[1:5:2]c2 = c[1:5:2]

更不用說如果所需的索引更改了,我們必須一一修改相應的索引。

一般來說,在一個程序中放入許多相同的數字不是一個好習慣。 這種情況下就可以使用切片對象(Slice Object)來存儲切片索引。

a = [1, 2, 3, 4, 5, 6]b = [3, 4, 5, 6, 7, 8, 9]c = [2, 3, 4, 5, 100, 101, 102]indexes = slice(1, 5, 2)a2 = a[indexes]b2 = b[indexes]c2 = c[indexes]

如上所示,內置的切片對象是一個簡單的輔助工具,可以幫助我們存儲三個數字并在需要時使用它。如果索引更改,我們只需要修改slice對象中的數字即可。

總結

Python 為我們提供了一些語法糖,可以使我們的代碼更具可讀性和優(yōu)雅性。切片技術就是一個很好的例子。了解并應用這些小技巧可以極大地提高我們的代碼質量。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多