「作者主頁」:士別三日wyx
此文章已錄入專欄《Python入門到精通》
2021最新版Python小白教程,針對0基礎小白和基礎薄弱的伙伴學習
提示:點擊串列中藍色「函式名」可直達函式決議區域
| 函式 | 作用 | 使用 |
|---|---|---|
| len | 獲取串列長度 | len( list ) |
| append | 添加元素至串列末尾 | list.append(‘name’) |
| extend | 添加串列內容至串列末尾 | list.extend( list ) |
| insert | 添加元素至指定索引 | list.insert( 1, ‘text’ ) |
| pop | 洗掉元素根據索引位置 | list.pop( 1 ) |
| remove | 洗掉指定元素 | list.pop( ‘text’ ) |
| clear | 洗掉串列所有元素 | list.clear() |
| index | 獲取元素的索引 | list.index( ‘text’ ) |
| count | 獲取元素出現的次數 | list.count( ‘text’ ) |
| copy | 復制串列 | list.copy() |
| reverse | 反轉元素的排列順序 | list.reverse() |
| sort | 排序 | list.sort() |
append()
語法
list.append( element )
引數
- element:任何型別的元素
串列「末尾」添加元素
name_list = ['zhangsan', 'lisi', 'wangwu']
name_list.append('zhaoliu')
print(name_list)
輸出:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
串列末尾可添加 「任意型別」資料,比如在串列中添加串列
name_list = ['zhangsan', 'lisi', 'wangwu']
name_list.append([1,2,3])
print(name_list)
輸出:
['zhangsan', 'lisi', 'wangwu', [1, 2, 3]]
append() 函式添加的是 「地址」,當被添加的串列發生變化時,添加后的串列也會 「同步變化」
list1 = ['zhangsan']
a = [1,2,3]
list1.append(a) # 串列list1添加串列a
print(list1)
a.append(4) # 串列a發生變化
list1.append(a)
print(list1) # 串列list1也會同步變化
輸出:
['zhangsan', [1, 2, 3]]
['zhangsan', [1, 2, 3, 4], [1, 2, 3, 4]]
補充兩個概念:
- 淺拷貝:拷貝這個物件的參考
- 深拷貝:拷貝物件的內容
「深拷貝」可解決 append() 函式添加串列的同步問題
list1 = ['zhangsan']
a = [1,2,3]
list1.append(copy.deepcopy(a)) # 深拷貝串列a
print(list1)
a.append(4) # 串列a發生變化
list1.append(copy.deepcopy(a)) # 深拷貝串列a
print(list1) # 串列list1不再同步變化
輸出:
['zhangsan', [1, 2, 3]]
['zhangsan', [1, 2, 3], [1, 2, 3, 4]]
append() 函式和 extend() 函式的區別
- append() 添加的是元素「參考」,而 extend() 添加的是元素的「值」
- append() 可以添加「任意型別」元素,而 extend() 只能添加「序列」
比如,添加串列時, append() 會添加整個串列,而 extend() 只會添加串列中的值
list1 = ['zhangsan', 'lisi', 'wangwu']
list2 = ['zhangsan', 'lisi', 'wangwu']
list1.append([1,2,3])
print('append添加整個串列:', list1)
list2.extend([1,2,3])
print('extend添加串列的值:', list2)
輸出:
append添加整個串列: ['zhangsan', 'lisi', 'wangwu', [1, 2, 3]]
extend添加串列的值: ['zhangsan', 'lisi', 'wangwu', 1, 2, 3]
extend()
語法
list.extend(iterable)
引數
- iterable:任何可迭代物件(串列、元祖等)
向串列 「末尾」添加串列內容
list1 = ['zhangsan', 'lisi', 'wangwu']
list1.extend([1,2,3]) # 串列末尾添加串列
print(list1)
list1.extend((4,5,6)) # 串列末尾添加元祖
print(list1)
輸出:
['zhangsan', 'lisi', 'wangwu', 1, 2, 3]
['zhangsan', 'lisi', 'wangwu', 1, 2, 3, 4, 5, 6]
Python中的 「字串」本質上也是一種陣列,屬于可迭代物件,可以使用 extend() 添加
list1 = ['zhangsan', 'lisi', 'wangwu']
list1.extend('abc') # 串列末尾添加字串
print(list1)
輸出:
['zhangsan', 'lisi', 'wangwu', 'a', 'b', 'c']
insert()
語法
list.insert( index, element)
引數
- index:數字,指定插入的位置
- element:任意型別,需要插入的元素
insert() 函式可以添加「任意型別」
list1 = ['zhangsan', 'lisi']
list1.insert(2, 2) # 添加整形
print(list1)
list1.insert(3, 'str') # 添加字串
print(list1)
list1.insert(4, [1,2,3]) # 添加串列
print(list1)
list1.insert(5, (4,5,6)) # 添加字典
print(list1)
輸出:
['zhangsan', 'lisi', 2]
['zhangsan', 'lisi', 2, 'str']
['zhangsan', 'lisi', 2, 'str', [1, 2, 3]]
['zhangsan', 'lisi', 2, 'str', [1, 2, 3], (4, 5, 6)]
insert同樣存在 「串列同步」問題,改為 「軟拷貝」即可
list1 = ['zhangsan', 'lisi']
a = [1,2,3]
list1.insert(2, a) # 添加串列a
print(list1)
a.append(4) # 串列a發生變化
print(list1) # 串列同步發生變化
輸出:
['zhangsan', 'lisi', [1, 2, 3]]
['zhangsan', 'lisi', [1, 2, 3, 4]]
pop()
語法
list.pop( index )
引數
- index:數字,需要洗掉的索引位置,默認值-1
- 回傳值:洗掉的值
不傳引數時,默認洗掉「最后」一個值
list1 = [1, 2, 3, 4]
list1.pop()
print(list1)
輸出:
[1, 2, 3]
洗掉 「指定」位置的元素
list1 = [1, 2, 3, 4]
list1.pop(1) # 洗掉第二個值
print(list1)
輸出:
[1, 3, 4]
「回傳」被洗掉的元素
list1 = [1, 2, 3, 4]
a = list1.pop(1) # 洗掉第二個值,并回傳被洗掉的值
print(a)
輸出:
2
remove()
語法
list.remove( element )
引數
- element:任意資料型別
remove() 函式洗掉「普通型別」元素
list1 = ['zhangsan', 'lisi', 1, 2]
list1.remove(1) # 洗掉數字
print(list1)
list1.remove('zhangsan') # 洗掉字串
print(list1)
輸出:
['zhangsan', 'lisi', 2]
['lisi', 2]
remove() 函式洗掉 「物件型別」元素
list1 = [1, 2, [3, 4], (5, 6)]
a = [3, 4]
b = (5, 6)
list1.remove(a) # 洗掉串列型別
print(list1)
list1.remove(b) # 洗掉元祖型別
print(list1)
輸出:
[1, 2, (5, 6)]
[1, 2]
remove() 函式洗掉物件型別的「前提」是,串列中的元素是物件型別,以下這種方式會報錯
list1 = [1, 2, 3, 4, 5]
list1.remove([1,2])
輸出:
Traceback (most recent call last):
File "E:/data/PrCharm/test1/55.py", line 2, in <module>
list1.remove([1,2])
ValueError: list.remove(x): x not in list
# 值錯誤: 需要洗掉的值不在串列中
remove() 函式「一次」只能洗掉一維陣列中的「一個」元素,自己刪自己也不行
list1 = [1, 2, 3, 4, 5]
print('我自己在我自己里面嗎?', list1 in list1)
list1.remove(list1)
輸出:
Traceback (most recent call last):
File "E:/data/PrCharm/test1/55.py", line 3, in <module>
list1.remove(list1)
ValueError: list.remove(x): x not in list
我自己在我自己里面嗎? False
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398608.html
標籤:其他
