python?list中append與extend方法示例總結(jié)
1. 基本定義
append()方法
作用:在列表末尾添加單個元素
語法:
list.append(element)特點(diǎn):無論添加什么,都作為一個整體元素加入
extend()方法
作用:在列表末尾添加多個元素
語法:
list.extend(iterable)特點(diǎn):將可迭代對象中的元素逐個加入
2. 基礎(chǔ)用法對比
python
# 基礎(chǔ)示例
fruits = ['apple', 'banana']
# append 用法
fruits.append('orange')
print(fruits) # ['apple', 'banana', 'orange']
# extend 用法
fruits.extend(['grape', 'mango'])
print(fruits) # ['apple', 'banana', 'orange', 'grape', 'mango']3. 核心區(qū)別詳解
情況1:添加列表時的區(qū)別
python
list1 = [1, 2, 3] list2 = [4, 5, 6] # append - 將整個list2作為一個元素添加 list1.append(list2) print(list1) # [1, 2, 3, [4, 5, 6]] - 嵌套列表! # extend - 將list2中的元素逐個添加 list1 = [1, 2, 3] # 重新初始化 list1.extend(list2) print(list1) # [1, 2, 3, 4, 5, 6] - 扁平列表
情況2:添加字符串時的區(qū)別
python
words = ['hello']
# append - 整個字符串作為一個元素
words.append('world')
print(words) # ['hello', 'world']
# extend - 字符串被拆分為字符
words = ['hello'] # 重新初始化
words.extend('world')
print(words) # ['hello', 'w', 'o', 'r', 'l', 'd']情況3:添加元組時的區(qū)別
python
numbers = [1, 2] # append - 整個元組作為一個元素 numbers.append((3, 4)) print(numbers) # [1, 2, (3, 4)] # extend - 元組元素逐個添加 numbers = [1, 2] # 重新初始化 numbers.extend((3, 4)) print(numbers) # [1, 2, 3, 4]
情況4:添加字典時的區(qū)別
# append 添加整個字典
my_list.append({'a': 1, 'b': 2})
print(my_list) # ['start', {'a': 1, 'b': 2}]
# extend 添加字典的鍵
my_list = ['start'] # 重新初始化
my_list.extend({'a': 1, 'b': 2})
print(my_list) # ['start', 'a', 'b']實(shí)際應(yīng)用場景
場景1:樹形結(jié)構(gòu)處理
python
class TreeNode:
def get_all_nodes(self):
"""獲取所有節(jié)點(diǎn)"""
all_nodes = [self] # 先添加自己
# 對于每個子節(jié)點(diǎn),遞歸獲取其所有節(jié)點(diǎn)并擴(kuò)展
for child in self.children:
all_nodes.extend(child.get_all_nodes()) # 正確:扁平化添加
# 如果錯誤使用append:
# for child in self.children:
# all_nodes.append(child.get_all_nodes()) # 錯誤:產(chǎn)生嵌套列表
return all_nodes場景2:數(shù)據(jù)合并
python
# 合并多個數(shù)據(jù)源
def merge_data_sources(*sources):
merged_data = []
for source in sources:
if isinstance(source, list):
merged_data.extend(source) # 合并列表
else:
merged_data.append(source) # 添加單個元素
return merged_data
# 使用示例
result = merge_data_sources(
[1, 2, 3],
'hello',
(4, 5),
[6, 7]
)
print(result) # [1, 2, 3, 'hello', (4, 5), 6, 7]
與其他方法的對比python
# 與 + 運(yùn)算符對比 list1 = [1, 2, 3] list2 = [4, 5, 6] # extend - 原地修改 list1.extend(list2) print(list1) # [1, 2, 3, 4, 5, 6] # + 運(yùn)算符 - 創(chuàng)建新列表 list1 = [1, 2, 3] new_list = list1 + list2 print(new_list) # [1, 2, 3, 4, 5, 6] print(list1) # [1, 2, 3] - 原列表不變
總結(jié)對比表
| 特性 | append() | extend() |
|---|---|---|
| 參數(shù) | 單個元素 | 可迭代對象 |
| 結(jié)果 | 添加整個對象作為元素 | 添加可迭代對象中的每個元素 |
| 內(nèi)存 | 較少修改 | 可能涉及更多內(nèi)存操作 |
| 性能 | O(1) | O(k),k為可迭代對象長度 |
| 適用場景 | 添加單個元素 | 合并多個元素 |
| 返回值 | None(原地修改) | None(原地修改) |
| 嵌套處理 | 可能產(chǎn)生嵌套 | 保持扁平結(jié)構(gòu) |
選擇指南
使用 append() 當(dāng):
添加單個元素
元素本身需要保持完整結(jié)構(gòu)
不確定元素類型時
使用 extend() 當(dāng):
合并多個元素
需要扁平化結(jié)構(gòu)時
處理已知的可迭代對象
到此這篇關(guān)于python list中append與extend方法的文章就介紹到這了,更多相關(guān)python list中append與extend方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python二進(jìn)制轉(zhuǎn)十進(jìn)制的常見實(shí)現(xiàn)方法
這篇文章詳細(xì)介紹了在Python中將二進(jìn)制轉(zhuǎn)換為十進(jìn)制的多種方法,包括使用內(nèi)置的int()函數(shù)、手動按位計(jì)算、使用math.pow()輔助計(jì)算、通過位運(yùn)算等,文章還討論了這些方法的性能差異,需要的朋友可以參考下2026-01-01
深入剖析Python的爬蟲框架Scrapy的結(jié)構(gòu)與運(yùn)作流程
這篇文章主要介紹了Python的爬蟲框架Scrapy的結(jié)構(gòu)與運(yùn)作流程,并以一個實(shí)際的項(xiàng)目來講解Scrapy的原理機(jī)制,十分推薦!需要的朋友可以參考下2016-01-01
Python應(yīng)用案例之利用opencv實(shí)現(xiàn)圖像匹配
OpenCV 是一個的跨平臺計(jì)算機(jī)視覺庫,可以運(yùn)行在 Linux、Windows 和 Mac OS 操作系統(tǒng)上,這篇文章主要給大家介紹了關(guān)于Python應(yīng)用案例之利用opencv實(shí)現(xiàn)圖像匹配的相關(guān)資料,需要的朋友可以參考下2024-08-08
Python實(shí)現(xiàn)列表索引批量刪除的5種方法
這篇文章主要介紹了Python實(shí)現(xiàn)列表索引批量刪除的5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

