針對Python中的List整理了幾個常用的methods的用法與需要注意的地方。
- 計算List的長度與項目出現次數,其中需注意len非buit-in function
1
2
3num_list = ['a','b','x','e','f','d','b','a']
print('length:',len(num_list)) # length: 8
print('count:',num_list.count('a')) # count: 2
使用Extend新增物件至List中,需注意:
- 當給予一個List作為input參數時,會逐一將新List中的物件加入到目標List中,與Append效果不同
- Extend屬於Built-in methods,故會直接改變原有的List,而不會回傳結果
1
2
3
4
5
6
7num_list = ['a','b','x','e','f','d']
extend_num_list = num_list.extend(['g','r'])
print('extend:',num_list) # extend: ['a', 'b', 'x', 'e', 'f', 'd', 'g', 'r']
#built-in methods: change original list, won't return new list
print('extend: append_num_list (before): ', extend_num_list) # extend: append_num_list (before): None
extend_num_list = num_list
print('extend: append_num_list (after): ', extend_num_list) # extend: append_num_list (after): ['a', 'b', 'x', 'e', 'f', 'd', 'g', 'r']
使用Append新增物件至List中,需注意:
- 其是用來新增一個物件,故當給予一個List時,其會直接把該List當成一個項目附加上去
Append屬於Built-in methods,故會直接改變原有的List,而不會回傳結果
1
2
3
4
5
6
7num_list = ['a','b','x','e','f','d']
append_num_list = num_list.append(['g','r'])
print('append:',num_list) # append: ['a', 'b', 'x', 'e', 'f', 'd', ['g', 'r']]
#built-in methods: change original list, won't return new list
print('append: append_num_list (before): ', append_num_list) # append: append_num_list (before): None
append_num_list = num_list
print('append: append_num_list (after): ', append_num_list) # append: append_num_list (after): ['a', 'b', 'x', 'e', 'f', 'd', ['g', 'r']]透過pop來取得List中項目,需注意:
- 如沒有傳入參數,則預設是回傳List最後一個item;否則,回傳指定的items
- 使用pop會將該項目從List中移除
1
2
3
4
5num_list = ['a','b','x','e','f','d']
num_list.pop()
print('pop:',num_list) # pop: ['a', 'b', 'x', 'e', 'f']
pop_item = num_list.pop(1)
print('pop:',num_list,', pop_item:',pop_item) # pop: ['a', 'x', 'e', 'f'] , pop_item: b
使用remove來移除指定的value,需注意
- 如有多個value符合,則會移除從頭數來的第一個
- remove屬於Built-in methods,故會直接改變原有的List,而不會回傳結果
1
2
3
4
5
6num_list = ['a','b','x','e','f','d','b','a']
new_remove_list = num_list.remove('x')
print('remove:',num_list) # remove: ['a', 'b', 'e', 'f', 'd', 'b', 'a']
print('remove:',new_remove_list) # remove: None
num_list.remove('a')
print('remove:',num_list) # remove: ['b', 'e', 'f', 'd', 'b', 'a']
透過index來取得value於List出現的位置,需注意:
- 當想要找的Item不在指定的搜尋範圍中時,其會跳出Exception,故要記得加上try…except避免程式的中斷
1
2
3
4
5
6num_list = ['a','b','x','e','f','d']
print('index:',num_list.index('d',0,len(num_list))) # index: 5
try:
print('index:',num_list.index('d',0,3)) # index: exception happened: 'd' is not in list
except Exception as e:
print('index: exception happened:',e)
- 當想要找的Item不在指定的搜尋範圍中時,其會跳出Exception,故要記得加上try…except避免程式的中斷
使用
sort()
與sorted()
來排序List中的物件,需注意:sort()
為Built-in methods,故會直接影響List內的排序,且不會回傳新的Listsorted()
為function,故不會改變原來的List,而是需要一個新的List來接收排序過後的List1
2
3
4
5
6
7
8
9
10
11
12
13
14num_list = ['a','b','x','e','f','d']
num_list_1=num_list[:]
sorted(num_list_1)
print('num_list:',num_list) # num_list: ['a', 'b', 'x', 'e', 'f', 'd']
print('num_list_1:',num_list_1) # num_list_1: ['a', 'b', 'x', 'e', 'f', 'd']
new_num_list_1 = sorted(num_list_1)
print('new_num_list_1:',new_num_list_1) # new_num_list_1: ['a', 'b', 'd', 'e', 'f', 'x']
num_list_2 = num_list[:]
num_list_2.sort()
print('num_list:',num_list) # num_list: ['a', 'b', 'x', 'e', 'f', 'd']
print('num_list_2:',num_list_2) # num_list_2: ['a', 'b', 'd', 'e', 'f', 'x']
#built-in methods: change original list, won't return new list
print('num_list_2:',num_list_2.sort()) # num_list_2: None
利用
join()
與split()
來拆解string成為List與合併List成為string,需注意:join()
是由串接的字元來呼叫,並且傳入想要合併的Listsplit()
則是由目標的List來呼叫,並且傳入拆解的字元1
2
3
4
5str_list = ['hi','my','name','is','ray']
join_string = ' '.join(str_list)
print('join:',join_string) # join: hi my name is ray
split_string = join_string.split(' ')
print(split_string) # ['hi', 'my', 'name', 'is', 'ray']
使用Unpacking來指定List中各item對應的變數名稱,需注意:
- 可以透過指標的方式來將List中連續的item指定給他,其方式可以參考下面
1
2
3
4
5
6a, b, c , *other, d = [1,2,3,4,5,6,7,8,9]
print(a) # 1
print(b) # 2
print(c) # 3
print(other) # [4, 5, 6, 7, 8]
print(d) # 9
- 可以透過指標的方式來將List中連續的item指定給他,其方式可以參考下面