列表中的append,extend, , 的區別

2021-09-06 08:02:07 字數 2947 閱讀 1527

help on method_descriptor:

>>> help(list.extend) # 往通過新增迭代物件來擴充列表

help on method_descriptor:

extend(...)

>>>

>>> a = ["a", "b"]

>>> a

['a', 'b']

>>> a = ["a", "b"]

>>> a

['a', 'b', ['c', 'd']]

>>> a = ["a", "b"]

>>> a

['a', 'b', range(0, 10)]

>>> a = [1, 2]

>>> class a:

... pass

>>> def b():

... pass

>>> a

[1, 2, , ]

# 往列表a,擴充乙個列表物件

>>> a = ["a", "b"]

>>> a.extend(["c", "d"])

>>> a

['a', 'b', 'c', 'd']

# 往列表a,擴充乙個迭代物件range(4)

>>> a = ["a", "b"]

>>> a.extend(range(4))

>>> a

['a', 'b', 0, 1, 2, 3]

# 往列表a,擴充乙個迭代物件"abcd"

>>> a = [1, 2]

>>> a.extend("abcd")

>>> a

[1, 2, 'a', 'b', 'c', 'd']

再來看往extend後新增單獨元素會報錯,因為單獨元素是不可迭代的。 

>>> a = ["a", "b"]

>>> a.extend(1)

traceback (most recent call last):

file "", line 1, in typeerror: 'int' object is not iterable

'int' object is not iterable

extend往後擴充的物件,是拿後面可迭代的所有元素往裡面新增

# +=操作

>>> a = ["a", "b"]

>>> b = ["c", "d"]

>>> a += b

>>> a

['a', 'b', 'c', 'd']

# +操作

>>> a = ["a", "b"]

>>> b = ["c", "d"]

>>> a = a + b

>>> a

['a', 'b', 'c', 'd']

從上面的例子能看看出無論是+還是+=,都只能在列表之間操作

>>> a = ["a", "b"]

>>> b = 1

>>> a += b

traceback (most recent call last):

file "", line 1, in typeerror: 'int' object is not iterable

'int' object is not iterable

>>> a = a + b

traceback (most recent call last):

file "", line 1, in typeerror: can only concatenate list (not "int") to list

can only concatenate list (not "int") to list

>>> a + range(10)

traceback (most recent call last):

file "", line 1, in typeerror: can only concatenate list (not "range") to list

can only concatenate list (not "range") to list

>>>

綜合上面的示例及報錯,來總結+,+=:

# 執行extend後,a的id不變

>>> a = [1, 2]

>>> b = [3, 4]

>>> id(a)

61099656

>>> a.extend(b)

>>> a

[1, 2, 3, 4]

>>> id(a)

61099656

>>> a = [1, 2]

>>> b = [3, 4]

>>> id(a)

65986184

>>> a

[1, 2, [3, 4]]

>>> id(a)

65986184

# 執行+=後,a的id不變

>>> a = [1, 2]

>>> b = [3, 4]

>>> id(a)

63943112

>>> a += b

>>> a

[1, 2, 3, 4]

>>> id(a)

63943112

# 執行+後,a的id發生變化

>>> a = [1, 2]

>>> b = [3, 4]

>>> id(a)

61026568

>>> a = a + b

>>> a

[1, 2, 3, 4]

>>> id(a)

61026952

從上面的id來看,似乎又可總結出:

執行+,會拷貝出乙個新的物件,會引起id的變化

如果執行+操作,一旦操作物件很多的話,經常需要拷貝新物件,效能是四者中最差的

python大列表 Python中的列表

python社群的理想就是建立一款乾淨,簡單,完美的語言.學習了兩三天,真的感覺python的一切設計,都是為了解決曾經讓程式設計師感覺痛苦的問題.看到python的列表,再想想曾經的學習過的陣列.我的天,這不是我一直苦苦尋找的東西嗎?由於列表和以前學習過的陣列有很大的差異性,在此做了一些筆記,留作...

Python中的列表

1 idle缺省內置函式都是紫色,字串是綠色,關鍵字 如if 是橙色,生成的所有結果為藍色 2 python的變數識別符號沒有型別!但是識別符號指示的資料物件有型別。3 python列表可以包含各種型別的資料,也就是說在同乙個列表中,可以同時有字串和數字 4 for迴圈 可以實現迭代 for 目標識...

python中的列表

python的列表 first列表的建立 way1 利用符號 來建立列表。way2 通過list函式將其他型別的序列轉換為列表。1,2,3,4 1,2,3,4 tup 1,2,3,4,5 tup list tup tup 1,2,3,4,5 second列表的修改 單個元素的修改 索引找到元素重新賦...