python3 入門 (二) 列表的使用


列表用於組織其它數值,即寫在方括號之間、用逗號分隔開的數值列表。列表內的項目不必全是相同的類型。

 

列表的定義

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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM