Python List 中的append 和 extend 的區別

  • 2022 年 7 月 17 日
  • 筆記

方法的參數不同

append 方法是向原list的末尾添加一個對象(任意對象;如元組,字典,列表等),且只佔據一個原list的索引位,添加後無返回值,直接在原列表中添加。 list.append(object)

list1 = ["hello", "world"]
list2 = "hello"
list_s = ["Python"]
list_s.append(list1)
list_s.append(list2)
print(list_s)
>> ['Python', ['hello', 'world']]
>> ['Python', ['hello', 'world'], 'hello']

extend 方法是向原list的末尾中添加一個可迭代的序列,序列中有多少個對象就會佔據原list多少個索引位置,添加後無返回值,直接在原列表中添加。 list.extend(sequence)

list1 = ["hello", "world"]
list2 = "hello"
list_s = ["Python"]
list_s.extend(list1)
list_s.extend(list2)			# 添加字符串時,字符串為可迭代序列,且序列元素為字符串中的字符
print(list_s)
>> ['Python', 'hello', 'world']
>> ['Python', 'hello', 'world', 'h', 'e', 'l', 'l', 'o']

對添加對象的處理方式不同

append 在內存中,是直接添加的追加對象的地址,沒有創建新的存儲空間,即修改原始的追加值,被追加的list也會被相應改變

list1 = ["hello", "world"]
list_s = ["Python"]
list_s.append(list1)
print(list_s)
list1[0] = "C"		# 原始追加值改變,list_s 也相應改變
print(list_s)

>> ['Python', ['hello', 'world']]
>> ['Python', ['C', 'world']]

extend 在內存中,是直接複製的追加對象的值,創建了新的存儲空間,原始追加值和添加後的值互不干擾

list1 = ["hello", "world"]
list_s = ["Python"]
list_s.extend(list1)
print(list_s)
list1[0] = "C"		# 原始追加值改變,list_s 不被影響,因為其創建了新的存儲空間
print(list_s)

>> ['Python', 'hello', 'world']
>> ['Python', 'hello', 'world']