前言
-
list: Python3的列表類型, 和其他語言中的數組類似
定義格式:
l = ["a", "b", "c", "a", "b", "c", "a"]
, 下文舉例用到的列表x為此列表 -
list常用方法(文章中用到的方法):
-
index(元素[, Start[, Stop]]) : 獲取列表下標
三個參數, 后兩個參數為可選參數.
一個參數, PS:
l.index("a")
, 獲取列表中第一個出現的"a"的下標, 此例獲取結果為0
兩個參數, PS:
l.index("a", 5)
, 獲取列表片段中第一個出現的"a"對應的列表的下標, 是指從列表的下標為5處開始查找, 默認找到列表結尾, 此例獲取結果為6
, 如果第二個參數為負數, 則下標位置從后往前數, 從-1開始, 例如最后一個"a"的位置就是-1, 第二個"c"的位置為-2三個參數, PS:
l.index("a", 2, 5)
, 獲取列表片段中第一個出現的"a"對應的列表的下標, 是指從列表的下標為2處(包括2)開始查找, 找到列表下標為5處(不包括5), 此例獲取結果為3
, 第三個參數為結束位置, 但不包含此位置 -
count(元素): 獲取元素在列表中的出現次數
PS:
l.count("a")
, 此例獲取結果為3
-
-
Python內置函數
-
enumerate(iterable[, Start])
返回一個枚舉對象, iterable必須是一個序列,或iterator,或其他支持迭代的對象. enumerate() 返回的迭代器的__next__() 方法返回一個元組,里面包含一個計數值(從 start 開始,默認為 0)和通過迭代 iterable 獲得的值
-
需求
- PS: 獲取列表x中第二個"a"出現的位置的下標
代碼實現
-
破壞原有結構
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 獲取第一個"a"的下標 index_one = l.index("a") # 刪除第一個出現的"a"元素 l.pop(index_one) # 再次獲取第一個"a"的下標(相當於原列表的第二個"a"), 因為列表刪除過一個元素, 所以加1 print(l.index("a") + 1)
-
for循環
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義變量, 記錄"a"出現次數 m = 0 # 定義變量, 記錄循環到的列表位置, 相當於列表下標 n = 0 # 遍歷列表 for i in l: if i == "a": n += 1 if n == 2: # 當"a"第二次出現時, 打印此時循環到的列表位置(下標) print(m) break m += 1
-
index方法
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 獲取第一個"a"的下標 index_one = l.index("a") # 從第一個"a"的下一個位置開始查找, 所以加1 print(l.index("a", index_one + 1))
-
enumerate函數枚舉
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義通用的獲取某元素在列表中第n次出現的位置下標的函數 def get_index(l, x, n): # 函數作用: 獲取某個元素第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 # 調用函數, 獲取結果 result_l = get_index(l, "a", 2) print(result_l)
-
列表推導式
# 定義列表 l = ["a", "b", "c", "a", "b", "c", "a"] # 定義通用的獲取某元素在列表中第n次出現的位置下標的函數 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 # 調用函數, 獲取結果 result_l = get_index(l, "a", 2) print(result_l)