我們知道在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卻是一個可迭代對象。
閱讀更多 編程思錄 的文章