前言
-
list: Python3的列表類型, 和其他語言中的數(shù)組類似
定義格式:
l = ["a", "b", "c", "a", "b", "c", "a"]
, 下文舉例用到的列表x為此列表 -
list常用方法(文章中用到的方法):
-
index(元素[, Start[, Stop]]) : 獲取列表下標(biāo)
三個參數(shù), 后兩個參數(shù)為可選參數(shù).
一個參數(shù), PS:
l.index("a")
, 獲取列表中第一個出現(xiàn)的"a"的下標(biāo), 此例獲取結(jié)果為0
兩個參數(shù), PS:
l.index("a", 5)
, 獲取列表片段中第一個出現(xiàn)的"a"對應(yīng)的列表的下標(biāo), 是指從列表的下標(biāo)為5處開始查找, 默認(rèn)找到列表結(jié)尾, 此例獲取結(jié)果為6
, 如果第二個參數(shù)為負(fù)數(shù), 則下標(biāo)位置從后往前數(shù), 從-1開始, 例如最后一個"a"的位置就是-1, 第二個"c"的位置為-2三個參數(shù), PS:
l.index("a", 2, 5)
, 獲取列表片段中第一個出現(xiàn)的"a"對應(yīng)的列表的下標(biāo), 是指從列表的下標(biāo)為2處(包括2)開始查找, 找到列表下標(biāo)為5處(不包括5), 此例獲取結(jié)果為3
, 第三個參數(shù)為結(jié)束位置, 但不包含此位置 -
count(元素): 獲取元素在列表中的出現(xiàn)次數(shù)
PS:
l.count("a")
, 此例獲取結(jié)果為3
-
-
Python內(nèi)置函數(shù)
-
enumerate(iterable[, Start])
返回一個枚舉對象, iterable必須是一個序列乒融,或iterator叮阅,或其他支持迭代的對象. enumerate() 返回的迭代器的next() 方法返回一個元組嚼摩,里面包含一個計數(shù)值(從 start 開始姐霍,默認(rèn)為 0)和通過迭代 iterable 獲得的值
-
需求
- PS: 獲取列表x中第二個"a"出現(xiàn)的位置的下標(biāo)
代碼實現(xiàn)
-
破壞原有結(jié)構(gòu)
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 獲取第一個"a"的下標(biāo) index_one = l.index("a") # 刪除第一個出現(xiàn)的"a"元素 l.pop(index_one) # 再次獲取第一個"a"的下標(biāo)(相當(dāng)于原列表的第二個"a"), 因為列表刪除過一個元素, 所以加1 print(l.index("a") + 1)
-
for循環(huán)
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義變量, 記錄"a"出現(xiàn)次數(shù) m = 0 # 定義變量, 記錄循環(huán)到的列表位置, 相當(dāng)于列表下標(biāo) n = 0 # 遍歷列表 for i in l: if i == "a": n += 1 if n == 2: # 當(dāng)"a"第二次出現(xiàn)時, 打印此時循環(huán)到的列表位置(下標(biāo)) print(m) break m += 1
-
index方法
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 獲取第一個"a"的下標(biāo) index_one = l.index("a") # 從第一個"a"的下一個位置開始查找, 所以加1 print(l.index("a", index_one + 1))
-
enumerate函數(shù)枚舉
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義通用的獲取某元素在列表中第n次出現(xiàn)的位置下標(biāo)的函數(shù) def get_index(l, x, n): # 函數(shù)作用: 獲取某個元素第n次出現(xiàn)在列表的下標(biāo) # 參數(shù)列表: 第一個參數(shù)為可迭代對象, 第二個參數(shù)為要查找的數(shù), 第三個參數(shù)為要查找第幾個出現(xiàn)的x l_count = l.count(x) result = None if n <= l_count: num = 0 for item in enumerate(l): if item[1] == x: num += 1 if num == n: result = item[0] break else: print("列表里總共有{}個{}".format(l_count, x)) return result # 調(diào)用函數(shù), 獲取結(jié)果 result_l = get_index(l, "a", 2) print(result_l)
-
列表推導(dǎo)式
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義通用的獲取某元素在列表中第n次出現(xiàn)的位置下標(biāo)的函數(shù) def get_index(l, x, n): if n <= l.count(x): all_index = [key for key, value in enumerate(l) if value == x] return all_index[n-1] else: return None # 調(diào)用函數(shù), 獲取結(jié)果 result_l = get_index(l, "a", 2) print(result_l)