結合串列【使用 extend() 或 +=】
extend()
用 extend() 將一個串列合併到另一個串列
- 串列名稱1 = ['字串', '字串', '字串']
- 串列名稱2 = ['字串', '字串']
- 串列名稱1.extend(串列名稱2)
- 串列名稱1
- 串列名稱1 = ['字串', '字串', '字串', '字串', '字串']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'karl']
>>> marxes.extend(others)
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'karl']
+=
- 串列名稱1 = ['字串', '字串', '字串']
- 串列名稱2 = ['字串', '字串']
- 串列名稱1 += 串列名稱2
- 串列名稱1
- 串列名稱1 = ['字串', '字串', '字串', '字串', '字串']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'karl']
>>> marxes += others
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'karl']
使用 append(),不是合併裡面項目,是被加成一個字串
- 串列名稱1 = ['字串', '字串', '字串']
- 串列名稱2 = ['字串', '字串']
- 串列名稱1.append(串列名稱2)
- 串列名稱1
- 串列名稱1 = ['字串', '字串', '字串', ['字串', '字串']]
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'karl']
>>> marxes.append(others)
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', ['Gummo', 'karl']]
加入
將串列項目附加到結尾【使用 append()】
要將項目添加到串列結尾,append()將它們一個個附加到串列的結尾
- 串列名稱.append('字串')
>>> marxes.append('Zeppo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']
加入一個項目【使用 insert() 及位移值】
- 將一個項目加到串列任何一個位移值
- 位移值 0 會在開頭處插入,超出串列結尾的位移值會將項目插至結尾(與 append() 一樣),所以不會有例外
- 串列名稱.insert(0, '字串') → 開頭處插入
- 串列名稱.insert(位移值, '字串') → 位移值處插入
- 串列名稱.insert(超出位移值, '字串') → 插入結尾
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> marxes.insert(3, 'Gummo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
>>> marxes.insert(10, 'karl')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'karl']
刪除
刪除一個項目【使用 del 及位移值】
- 使用位移值刪除,後面項目會往前遞補到被刪除項目的位置,且串列的長度會減1
- del 是 python陳述式,不是串列方法(不可使用 marxes[-2].del() )
- del 是一種賦值(=)的反向動作:會將 Python 物件與名稱分離。如果名稱是最後一個參考物件的名稱,也會釋出物件的記憶體。
- 串列名稱 = ['字串1', '字串2', '字串3']
- del 串列名稱[位移值]
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Karl']
>>> del marxes[-1]
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
>>> marxes[2]
'Harpo'
>>> del marxes[2]
>>> marxes
['Groucho', 'Chico', 'Gummo', 'Zeppo']
>>> marxes[2]
'Gummo'
刪除項目【使用 remove() 及值】
不清楚某項目的位移值,想要刪除,可使用 remove() 及值
- 串列名稱 = ['字串1', '字串2', '字串3']
- 串列名稱.remove('字串2')
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
>>> marxes.remove('Gummo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']
取得一個項目,並刪除它【使用 pop() 及位移值】
使用 pop(),從串列中取得一個項目,同時刪除它
- 串列名稱.pop(位移值) → 回傳該位移值項目
- 串列名稱.pop(0) → 回傳串列開頭
- 串列名稱.pop() → 回傳串列結尾【沒有引數,使用-1】
- 串列名稱.pop(-1) → 回傳串列結尾
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> marxes.pop(0)
'Groucho'
>>> marxes
['Chico', 'Harpo', 'Zeppo']
>>> marxes.pop()
'Zeppo'
>>> marxes
['Chico', 'Harpo']
>>> marxes.pop(-1)
'Harpo'
>>> marxes
['Chico']
尋找項目的位移值【使用 index() 及值】
用「值」來查詢在串列中的位移值,可使用index()
- 串列名稱 = ['字串1', '字串2', '字串3']
- 串列名稱.index('字串2')
- 位移值
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> marxes.index('Chico')
1
用 in 來測試值
- 檢查在串列中,某個值是否存在
- 在串列中,同一個值可能會出現在不同位置上。只要在串列裡至少出現一次,函式就會回傳 True
- 如果經常檢查串列某值是否存在,且不在乎項目的順序。Python 集合更適合用來儲存及查看獨一無二的值
- 串列名稱 = ['字串1', '字串2', '字串3']
- '字串1' in 串列名稱
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> 'Groucho' in marxes
True
>>> 'Bob' in marxes
False
>>>
>>> words = ['a', 'deer', 'a', 'female', 'deer']
>>> 'deer' in words
True
算出某個值的出現次數【使用 count()】
- 串列名稱 = ['字串1', '字串2', '字串3', '字串1']
- 串列名稱.count('字串2')
- 1
- 串列名稱.count('字串1')
- 2
>>> words = ['a', 'deer', 'a', 'female', 'deer']
>>> 'deer' in words
True
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes.count('Harpo')
1
>>> marxes.count('Bob')
0
>>> snl_skit = ['cheeseburger', 'cheeseburger', 'cheeseburger']
>>> snl_skit.count('cheeseburger')
3
取得串列項目的數量【使用 len()】
- 串列名稱 = ['字串1', '字串2', '字串3']
- len(字串名稱)
- 3
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> len(marxes)
3
轉換成字串【使用 join()】
- join()函式是split()的相反:將一個字串串列結合成一個字串
- join()是一種字串方法,不是串列方法,不能使用 marxes.join(', ')
- 字串名稱.join(引數:字串、分隔符號、換行符號、任何可迭代的字串序列,包括字串)→ 輸出字串
字串名稱.split(','/分隔符號引數/空白字元:換行符號、空格、tab)
分隔符號:,
- 換行符號:\n、空格、tab
split()使用:方法二
【步驟一】join()使用:方法二
- 字串名稱 = '字串'(此字串是連結字,可以是分隔符號、換行符號)
- 串列名稱1 = ['字串', '字串', '字串', '字串']
- 字串 = 字串名稱(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱) →串列轉換成字串
【步驟二】split()使用
- 串列名稱2 = 字串.split(字串名稱:此字串是連結字,可以是分隔符號、換行符號) →字串轉換成串列
- 串列名稱2 = ['字串', '字串', '字串', '字串']
- 串列名稱1 = 串列名稱2
>>> friends = ['Harry', 'Hermione', 'Ron']
>>> separator = ' * '
>>> joined = separator.join(friends)
>>> joined
'Harry * Hermione * Ron'
>>> separated = joined.split(separator)
>>> separated
['Harry', 'Hermione', 'Ron']
>>> separated == friends
True
排序項目【使用 sort()】
通常會按照串列項目的值來排序它們,而不是它們的位移值
sort()【串列函式,就地排序串列本身】
- 串列使用串列函式sort(),會改變串列
- 如果串列元素的類型都相同(例如:字串),sort()就會正確地動作
- 如果串列元素混合使用多種類型(例如:整數、浮點數),sort()會自動轉換
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes.sort()
>>> marxes
['Chico', 'Groucho', 'Harpo']
>>> numbers = [2, 1, 4.0, 3]
>>> numbers.sort()
>>> numbers
[1, 2, 3, 4.0]
排序上昇 → 排序下降【加入引數:reverse=True】
預設的排序是昇幕,但可以加入引數 reverse=True 來將它設為降幕
>>> numbers = [2, 1, 4.0, 3]
>>> numbers.sort(reverse=True)
>>> numbers
[4.0, 3, 2, 1]
sorted()【通用函式,排序串列→回傳複本】
- sorted()會創造複本,建立它不會改變原本的串列
- 串列的項目是數字,Python 會上昇排列數字
- 串列的項目是字串,Python 會按照字母順序來排列
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> sorted_marxes = sorted(marxes)
>>> sorted_marxes
['Chico', 'Groucho', 'Harpo']
>>> marxes
['Groucho', 'Chico', 'Harpo']
用 = 來指派,用 copy() 來複製
指派
- 一個串列指派給多個變數時,修改其中一個變數的串列,其他變數的串列會跟著修改
- b 只是參考與 a 同樣的串列物件,無論用變數名稱 a 或 b 來變更串列內容,兩者都會反映出來
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> b = a
>>> b
[1, 2, 3]
>>> a[0] = 'surprise'
>>> a
['surprise', 2, 3]
>>> b
['surprise', 2, 3]
>>> b
['surprise', 2, 3]
>>> b[0] = 'I hate surprise'
>>> b
['I hate surprise', 2, 3]
>>> a
['I hate surprise', 2, 3]
複製串列
可以使用以下的方法,將串列的值複製到一個獨立全新的串列
- copy()【串列的 copy() 函式】
- list()【list() 轉換函式】
- slice[:]【串列 slice[:]】
範例:
- 原始串列 a = [1, 2, 3]
- 複製串列 b = a.copy()
- 複製串列 c = list(a)
複製串列 d = a[:]
複製串列 b、c、d:</ br> → 皆是原始串列 a 的複本</ br> → 皆是新物件</ br> → 擁有各自自己的值</ br> → 與 a 所參考的原始串列物件 [1, 2, 3] 沒有關聯</ br> → 改變 a 不會影響 b、c、d 複本
>>> a = [1, 2, 3]
>>> b = a.copy()
>>> c = list(a)
>>> d = a[:]
>>> a[0] = 'integer lists are boring'
>>> a
['integer lists are boring', 2, 3]
>>> b
[1, 2, 3]
>>> c
[1, 2, 3]
>>> d
[1, 2, 3]