Python3列表中+、+=、extend的方法區別

我們知道在list中,有+、+=、和extend,但是它這3個的區別你知道麼?

+:

+=:

你肯定會說這個沒啥好說的,那麼我們修改一下,將這個列表 [5,6,7]修改為元組(5,6,7),然後我們再分別使用+和+=試試:

所以看到沒,我們這個+=可以連接不同類型的數據類型,知道為什麼麼,因為它裡面包含了一個魔法函數__iadd__(),通過源碼我們發現裡面包含了我們的extend:

我們再來看一下我們的extend方法,只要是iterable就可以放在裡面,前面也說過我們的序列類型都是支持可迭代的:

所以我們現在來看一下這個extend的用法:

a = [1,2 ,3]
a.extend(range(3))
print(a)

# 輸出結果:
[1, 2, 3, 0, 1, 2]

有很多人喜歡賦值對象,我們也來看看:

所以你注意到沒有,我們這裡的extend是直接對這個a對象進行操作的,然後就臨時存在了內存裡面,你這是去引用是找不到的,注意一下這個地方。現在就有人想起了list的append()方法,行這裡我們也來試一試:

我們還是來對比一下它們的源碼吧:

看到沒有append插入的只是一個值而已,而我們的extend卻是一個可迭代對象。

Python3列表中+、+=、extend的方法區別


分享到:


相關文章: