列表用於組織其它數值,即寫在方括號之間、用逗號分隔開的數值列表。列表內的項目不必全是相同的類型。
列表的定義
1 student = ['Tom', 'Jack', 'Avril']
添加元素
- 將另一個列表直接賦值給該列表
- 使用"[頭下標:尾下標]"j將另一個列表的指定元素值拷貝至該列表
- 使用"+"連接符,將元素添加至列表末尾
- 使用" * "乘號得到多個相同元素
- 使用append方法,將元素添加至列表末尾
- 使用extend方法,將元素添加至列表末尾
- 使用insert方法,將元素插入至指定位置
1 student = ['Tom', 'Jack', 'Avril'] 2 student *= 3 3 print(student) #['Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril'] 4 5 6 # student中變量為name值的復制 7 name = ['Jerry', 'Lucy'] 8 student = name[:] 9 print(student) # ['Jerry', 'Lucy'] 10 name.clear() 11 print(student) # ['Jerry', 'Lucy'] 12 13 14 # *得到的每一相同項指向同一內存地址 15 name = ['Jerry']*3 16 print(name) # ['Jerry', 'Jerry', 'Jerry'] 17 print(id(name[0])) # 54580088 18 print(id(name[1])) # 54580088 19 print(id(name[2])) # 54580088 20 21 22 # name2與name1指向同一內存地址 23 name1 = ['Jerry'] 24 name2 = name1 25 print(name2) # ['Jerry'] 26 name1.clear() 27 print(name2) # [] 28 29 # student中變量為name值的復制,與name不指向同一內存地址 30 name = ['Jerry'] 31 student = name*3 32 print(student) # ['Jerry', 'Jerry', 'Jerry'] 33 name.clear() 34 print(student) # ['Jerry', 'Jerry', 'Jerry'] 35 36 37 # append添加后,student中的['Jerry']與name變量指向同一內存地址 38 student = ['Tom', 'Jack', 'Avril'] 39 name = ['Jerry'] 40 student.append(name) 41 print(student) # ['Tom', 'Jack', 'Avril', ['Jerry']] 42 name.clear() 43 print(student) # ['Tom', 'Jack', 'Avril', []] 44 45 46 # 與name變量不指向同一內存地址 47 student = ['Tom', 'Jack', 'Avril'] 48 name = 'Jerry' 49 student.append(name) 50 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] 51 del name 52 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] 53 54 55 # 同上,insert插入后,student中的['Jerry']與name變量指向同一內存地址 56 student = ['Tom', 'Jack', 'Avril'] 57 name = ['Jerry'] 58 student.insert(1, name) 59 print(student) # ['Tom', ['Jerry'], 'Jack', 'Avril'] 60 name.clear() 61 print(student) # ['Tom', [], 'Jack', 'Avril'] 62 63 64 # 與name變量不指向同一內存地址 65 student = ['Tom', 'Jack', 'Avril'] 66 name = 'Jerry' 67 student.insert(1, name) 68 print(student) # ['Tom', 'Jerry', 'Jack', 'Avril'] 69 del name 70 print(student) # ['Tom', 'Jerry', 'Jack', 'Avril'] 71 72 73 # extend添加后,student中的['Jerry']為name值的復制 74 student = ['Tom', 'Jack', 'Avril'] 75 name = ['Jerry'] 76 student.extend(name) 77 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] 78 name.clear() 79 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] 80 81 82 student = ['Tom', 'Jack', 'Avril'] 83 name = 'Jerry' 84 student.extend(name) 85 print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y'] 86 del name 87 print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
刪除元素
- 使用remove方法刪除指定值的元素
- 使用pop方法彈出棧頂元素,返回彈出元素
- 使用del關鍵字刪除指定位置元素
- 使用clear方法清空列表元素,等於del a[:]
1 # 刪除指定值的元素 2 student = ['Tom', 'Jack', 'Avril'] 3 student.remove('Tom') 4 print(student) 5 6 # 彈出棧頂元素 7 student = ['Tom', 'Jack', 'Avril'] 8 s = student.pop() 9 print(s) 10 print(student) 11 12 # 刪除指定位置元素 13 student = ['Tom', 'Jack', 'Avril'] 14 del student[1] 15 print(student)
其他操作:
list.index(x) | 返回列表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤 |
list.count(x) | 返回 x 在列表中出現的次數 |
list.sort() | 對列表中的元素進行排序。參數reverse默認為False,從小到大排序,設置為True則為從大到小排序 |
list.reverse() | 倒排列表中的元素 |
list.copy() | 返回列表的淺復制(變量值的復制),等於list[:] |
列表推導式
列表推導式提供了從序列創建列表的簡單途徑。通常應用程序將一些操作應用於某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定的判定條件創建子序列。
每個列表推導式都在 for 之后跟一個表達式,然后有零到多個 for 或 if 子句。返回結果是一個根據表達從其后的 for 和 if 上下文環境中生成出來的列表。如果希望表達式推導出一個元組,就必須使用括號。
將列表中每個數值乘三,獲得一個新的列表:
>>> num = [1, 2, 3] >>> [3*n for n in num] [3, 6, 9]
可以用 if 子句作為過濾器:
>>> num = [1, 2, 3] >>> [3*n for n in num if n > 2] [9] >>> [3*n for n in numif n < 3] [3,6]
其他用法:
>>> vec1 = [2, 4, 6] >>> vec2 = [4, 3, -9] >>> [x*y for x in vec1 for y in vec2] [8, 6, -18, 16, 12, -36, 24, 18, -54] >>> [vec1[i]*vec2[i] for i in range(len(vec1))] [8, 12, -54]
用列表推導式實現矩陣轉置:
1 # 矩陣轉置 2 matrix = [ 3 [1, 2, 3], 4 [4, 5, 6], 5 [7, 8, 9], 6 [10, 11, 12] 7 ] 8 9 # 方法一 10 newMatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))] 11 print(newMatrix) 12 13 # 方法二 14 newMatrix = [] 15 for i in range(len(matrix[0])): 16 newMatrix.append([row[i] for row in matrix]) 17 print(newMatrix) 18 19 # 方法三 20 newMatrix = [] 21 for i in range(len(matrix[0])): 22 newRow = [] 23 for oldRow in matrix: 24 newRow.append(oldRow[i]) 25 newMatrix.append(newRow) 26 print(newMatrix)