python筆記 11-13 (列表方法)
List.index(object,start,stop) 查詢object 在list中第一次出現的索引號,如果object不存在則報錯。Strat ,stop不寫的話預設從list從開始到結尾
List.cout(object) ,object 在列表中出現的次數
List.copy 賦值列表
Len(list) 列表的長度
List.sort(self, key=None, reverse=False) 列表排序,預設是從小到大,若reverse=true則從大到小。注意:sout內物件型別要一致(ascii碼中’5’>’A’>’a’)
注意:列表下標是從0開始
###例
print(C[:])
print(C[0:]) 從第一個元素開始遍歷
print(C[1:]) 從第二個元素開始遍歷
都是遍歷列表的意思
加:A = [“1”,”2”,”3”,”4”,”5”]
B=[“A”,”B”]
C = A + B
C : [“1”,”2”,”3”,”4”,”5”, “A”,”B”]
乘法: A = [None] * 10
A: [None, None, None, None, None, None, None, None, None, None]
a = []
a[0] = 5
print(a)
Traceback (most recent call last):
File “E:/project/temp.py”, line 23, in
a[0] = 5
IndexError: list assignment index out of range
原因:a定義的是空列表,其長度為0,第二行a[0] = 5,是修改數值,不是增加列表專案,所以報錯,列表的索引超出範圍
a = [[1, 2, 3], [4, 5, 6],[6, 7, 9]]
for i, j, k in a:
print(i, j, k)
二維或二維混合列表遍歷方法:
a = [[1, 2, 3], [4, 5, 6, 7, 8], 9]
for i in a:
if type(i) == list:
for j in i:
print(j)
else:
print(i)
遍歷非同等長度的二級列表
列表 = [[值1,值2],[值1,值2,值3],[值]…]
for 變數1 in 列表:
for 變數2 in 變數1:
使用變數2(變數2是二級列表中的每個值)
a = [[1, 2], [4, 5, 6], [6]]
for i in a:
for j in i:
print(j)
列表推導式:( https://www.cnblogs.com/tkqasn/p/5977653.html
推導式comprehensions(又稱解析式),是Python的一種獨有特性。推導式是可以從一個數據序列構建另一個新的資料序列的結構體。 共有三種推導,
基本格式
variable = [out_exp_res for out_exp in input_list if out_exp == 2]
out_exp_res: 列表生成元素表示式,可以是有返回值的函式。
for out_exp in input_list: 迭代input_list將out_exp傳入out_exp_res表示式中。
if out_exp == 2: 根據條件過濾哪些值可以。
簡單的列表推導式
格式:[變數 for 變數 in 列表]
結果:遍歷列表中的每個值,將每個值獲取之後組成新的列表,可以對獲取的值進行修改
[變數可以其他操作 for 變數 in 列表]
帶有判斷條件的列表推導式
格式:[變數 for 變數 in 列表 if 條件表示式]
結果:遍歷列表中的每個值,根據判斷條件決定是否取出指定的值組成新的列表,可以對獲取的值進行修改
多個列表的同時迴圈的列表推導式
格式:[變數1+變數2 for 變數1 in 列表1 for 變數2 in 列表2]
結果:同時遍歷列表1和列表2中的每個值,將列表1中的每個值和列表2中的每個值進行運算得到新的列表新的列表中元素個數=列表1中元素個數 * 列表2中的元素個數
變數1和變數2可以進行其他操作,不一定非要+ 這只是demo
帶有判斷條件的多個列表的同時迴圈列表推導式
格式:[變數1+變數2 for 變數1 in 列表1 for 變數2 in 列表2 if 條件表示式]
結果:同時遍歷列表1和列表2中的每個值,根據判斷條件將列表1中的值和列表2中的值進行運算,得到新的列表
新的列表數量由判斷條件決定
Eg: 實現99乘法表(使用列表推導式實現99乘法表中的每個運算)
print(’\n’.join([’ '.join("{} * {} = {}".format(j, i, j * i) for j in range(1, i + 1, 1))for i in range(1, 10, 1)]))
重點理解:"{} * {} = {}"的左邊和j in range(1, i + 1, 1)的右邊分別加了一個’(’’)’裡面作為一個表示式,for後面對i的迭代 生成器!
詳細:https://blog.csdn.net/yzxnuaa/article/details/79206930
補充:列表推導式的執行順序:各語句之間是巢狀關係,左邊第二個語句是最外層,依次往右進一層,左邊第一條語句是最後一層。
[xy for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
執行順序:
for x in range(1,5)
if x > 2
for y in range(1,4)
if y < 3
xy
補充:
a = [i for i in range(101) if not (i % 2 == 1) and i % 3] # 0~100中能被2整除,不能被3整除的數
enumerate() 函式
enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
enumerate(sequence, [start=0])