結合串列【使用 extend() 或 +=】

extend()

用 extend() 將一個串列合併到另一個串列

  1. 串列名稱1 = ['字串', '字串', '字串']
  2. 串列名稱2 = ['字串', '字串']
  3. 串列名稱1.extend(串列名稱2)
  4. 串列名稱1
  5. 串列名稱1 = ['字串', '字串', '字串', '字串', '字串']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'karl']
>>> marxes.extend(others)
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'karl']

+=

  1. 串列名稱1 = ['字串', '字串', '字串']
  2. 串列名稱2 = ['字串', '字串']
  3. 串列名稱1 += 串列名稱2
  4. 串列名稱1
  5. 串列名稱1 = ['字串', '字串', '字串', '字串', '字串']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> others = ['Gummo', 'karl']
>>> marxes += others
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'karl']

使用 append(),不是合併裡面項目,是被加成一個字串

  1. 串列名稱1 = ['字串', '字串', '字串']
  2. 串列名稱2 = ['字串', '字串']
  3. 串列名稱1.append(串列名稱2)
  4. 串列名稱1
  5. 串列名稱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() 一樣),所以不會有例外
  1. 串列名稱.insert(0, '字串') → 開頭處插入
  2. 串列名稱.insert(位移值, '字串') → 位移值處插入
  3. 串列名稱.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. 串列名稱 = ['字串1', '字串2', '字串3']
  2. 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. 串列名稱 = ['字串1', '字串2', '字串3']
  2. 串列名稱.remove('字串2')
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']
>>> marxes.remove('Gummo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']

取得一個項目,並刪除它【使用 pop() 及位移值】

使用 pop(),從串列中取得一個項目,同時刪除它

  1. 串列名稱.pop(位移值) → 回傳該位移值項目
  2. 串列名稱.pop(0) → 回傳串列開頭
  3. 串列名稱.pop() → 回傳串列結尾【沒有引數,使用-1】
  4. 串列名稱.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. 串列名稱 = ['字串1', '字串2', '字串3']
  2. 串列名稱.index('字串2')
  3. 位移值
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>> marxes.index('Chico')
1

用 in 來測試值

  • 檢查在串列中,某個值是否存在
  • 在串列中,同一個值可能會出現在不同位置上。只要在串列裡至少出現一次,函式就會回傳 True
  • 如果經常檢查串列某值是否存在,且不在乎項目的順序。Python 集合更適合用來儲存及查看獨一無二的值
  1. 串列名稱 = ['字串1', '字串2', '字串3']
  2. '字串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. 串列名稱 = ['字串1', '字串2', '字串3', '字串1']
  2. 串列名稱.count('字串2')
  3. 1
  4. 串列名稱.count('字串1')
  5. 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. 串列名稱 = ['字串1', '字串2', '字串3']
  2. len(字串名稱)
  3. 3
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> len(marxes)
3

轉換成字串【使用 join()】

  • join()函式是split()的相反:將一個字串串列結合成一個字串
  • join()是一種字串方法,不是串列方法,不能使用 marxes.join(', ')
  • 字串名稱.join(引數:字串、分隔符號、換行符號、任何可迭代的字串序列,包括字串)→ 輸出字串
  • 字串名稱.split(','/分隔符號引數/空白字元:換行符號、空格、tab)

  • 分隔符號:,

  • 換行符號:\n、空格、tab

split()使用:方法二

【步驟一】join()使用:方法二

  1. 字串名稱 = '字串'(此字串是連結字,可以是分隔符號、換行符號)
  2. 串列名稱1 = ['字串', '字串', '字串', '字串']
  3. 字串 = 字串名稱(此字串是連結字,可以是分隔符號、換行符號).join(串列名稱)串列轉換成字串

【步驟二】split()使用

  1. 串列名稱2 = 字串.split(字串名稱:此字串是連結字,可以是分隔符號、換行符號) →字串轉換成串列
  2. 串列名稱2 = ['字串', '字串', '字串', '字串']
  3. 串列名稱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[:]】

範例:

  1. 原始串列 a = [1, 2, 3]
  2. 複製串列 b = a.copy()
  3. 複製串列 c = list(a)
  4. 複製串列 d = a[:]

  5. 複製串列 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]

results matching ""

    No results matching ""