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']