1. 程式人生 > >Python 列表的定義及操作

Python 列表的定義及操作

語句 rabl 適合 操作 想要 所有 乘法 指定元素 sorted

#   列表概念:有序的可變的元素集合

#   定義
#   直接定義
nums = [1,2,3,4,5]

#   通過range函數構造,python2 和python3 版本之間的差異;
#   python3 用的時候才會去構造
nums = range(1,101)

#   列表嵌套
#   註意和C語言中數組的區別,是否可以存放不同的數據類型
nums = [1,2,"ab","1",True,["a","b","c"]]

#   列表賦值給另外一個列表
#   原始的方式
nums = [1,2,3,4,5]
resultList = []
for num in nums: resultList.append(num ** 2) print(resultList) # [1, 4, 9, 16, 25] # 列表推導式 nums = [1,2,3,4,5] # [表達式 for 變量 in 列表] resultList = [num ** 2 for num in nums] print(resultList) # [1, 4, 9, 16, 25] # [表達式 for 變量 in 列表 if 條件] resultList = [num ** 2 for num in nums if
num % 2 != 0] print(resultList) # [1, 9, 25] # 列表的增,刪,改,插 #-------------------------------------增------------------------------------# # append # 作用 # 往列表中, 追加一個新的元素 # 在列表的最後 # 語法 # l.append(object) # 參數 # object
# 想要添加的元素 # 返回值 # None # 註意 # 會直接修改原數組 nums = [1, 2, 3, 4] nums.append(5) # 無返回值 none print(nums) # [1, 2, 3, 4, 5] # insert # 作用 # 往列表中, 追加一個新的元素 # 在指定索引前面 # 語法 # l.insert(index, object) # 參數 # index # 索引, 到時會插入到這個索引之前 # object # 想要添加的元素 # 返回值 # None # 註意 # 會直接修改原數組 nums = [1, 2, 3, 4] nums.insert(2, 5) print(nums) # [1, 2, 5, 3, 4] # extend # 作用 # 往列表中, 擴展另外一個可叠代序列 # 語法 # l.extend(iterable) # 參數 # iterable # 可叠代集合 # 字符串 # 列表 # 元組 # ... # 返回值 # None # 註意 # 會直接修改原數組 # 和append之間的區別 # extend可以算是兩個集合的拼接 # append是把一個元素, 追加到一個集合中 nums = [1, 2, 3, 4] nums2 = ["a", "b", "c"] nums.extend(nums2) print(nums) # [1, 2, 3, 4, ‘a‘, ‘b‘, ‘c‘] # 乘法運算 # ["a"] * 3 # = # [‘a‘, ‘a‘, ‘a‘] nums = [1, 2] print(nums * 2) # [1, 2, 1, 2] # 加法運算 # ["a"] + ["b", "c"] # = # ["a", "b", "c"] # 和extend區別 # 只能列表類型和列表類型相加 n1 = [1, 2] n2 = ["a", "b"] n3 = ["abc", "cdf"] print(n1 + n2); #[1, 2, ‘a‘, ‘b‘] print(n1 + n3); #[1, 2, ‘abc‘, ‘cdf‘] # ------------------------------------------刪------------------------------# # del 語句 # 作用 # 可以刪除一個指定元素(對象) # 語法 # del 指定元素 # 註意 # 可以刪除整個列表 # 刪除一個變量 # 也可以刪除某個元素 nums = [1, 2, 3, 4] del nums[1] print(nums) # [1, 3, 4] #del nums #這樣也行 #print(nums)#程序會報錯 # pop # 作用 # 移除並返回列表中指定索引對應元素 # 語法 # l.pop(index=-1) # 參數 # index # 需要被刪除返回的元素索引 # 默認是-1 # 也就對應著列表最後一個元素 # 返回值 # 被刪除的元素 # 註意 # 會直接修改原數組 # 註意索引越界 nums = [1, 2, 3, 4] nums.pop() #默認-1 print(nums) # remove # 作用 # 移除列表中指定元素 # 語法 # l.remove(object) # 參數 # object # 需要被刪除的元素 # 返回值 # None # 註意 # 會直接修改原數組 # 如果元素不存在 # 會報錯 # 若果存在多個元素 # 則只會刪除最左邊一個 # 註意循環內刪除列表元素帶來的坑 nums = [1, 2, 2, 3, 4] nums.remove(2) #則只會刪除最左邊一個 print(nums) #[1, 2, 3, 4] # ---------------------------------------------改----------------------------------------# # names[index] = 666 nums = [1, 2, 3] nums[1] = 5 print(nums) #[1, 5, 3] #--------------------------------------------- 查----------------------------------------# # 獲取單個元素 # items[index] # 註意負索引 nums = [1, 2, 3] print(nums[-1]) # 3 # 獲取元素索引 # index() nums = [1, 2, 5, 3, 4] print(nums.index(5)) # 2 # 獲取指定元素個數 # count() nums = [1, 2, 5, 2, 3, 4] print(nums.count(2) ) #2 # 獲取多個元素 # 切片 # items[start:end:step] # 遍歷 # 方式1 # 根據元素進行遍歷 # for item in list: # print(item) # 方式2 # 根據索引進行遍歷 # for index in range(len(list)): # print(index, list[index]) # 方式3(了解) # 創建對應的枚舉對象 # 概念 # 通過枚舉函數, 生成的一個新的對象 # 作用 # 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列 # 同時列出數據下標和數據 # 語法 # enumerate(sequence, [start=0]) # sequence -- 一個序列、叠代器或其他支持叠代對象。 # start -- 下標起始位置。 # 舉例 # l = ["a", "b", "c"] # enumerate(l, 1) # 一個待枚舉的對象 # 轉換成為list之後, 具體數據如下 # [(1, ‘a‘), (2, ‘b‘), (3, ‘c‘)] # 遍歷枚舉對象 # for index, value in 枚舉對象: # print(index, value) # 方式4(了解) # 使用叠代器進行遍歷 # iterL = iter(list) # for item in iterL: # print(item) # 訪問集合的方式-叠代器 # 概念 # 叠代 # 是訪問集合元素的一種方式 # 按照某種順序逐個訪問集合中的每一項 # 可叠代對象 # 能夠被叠代的對象, 稱為可叠代對象 # 判定依據 # 能作用於for in # 判定方法 # import collections # isinstance(obj, collections.Iterable) # 叠代器 # 是可以記錄遍歷位置的對象 # 從第一個元素開始, 往後通過next()函數, 進行遍歷 # 只能往後, 不能往前 # 判定依據 # 能作用於next()函數 # 判定方法 # import collections # isinstance(obj, collections.Iterator) # 註意 # 叠代器也是可叠代對象, 所以也可以作用於for in # 為什麽會產生叠代器? # 1. 僅僅在叠代到某個元素時才處理該元素 # 在此之前, 元素可以不存在 # 在此之後, 元素可以被銷毀 # 特別適合用於遍歷一些巨大的或是無限的集合 # 例如 "菲波那切數列" # 2. 提供了一個統一的訪問集合的接口 # 可以把所有的可叠代對象, 轉換成叠代器進行使用 # iter(Iterable) # iter(str) # iter(list) # iter(tuple) # iter(dict) # ... # 叠代器簡單使用 # 使用next()函數, 從叠代器中取出下一個對象, 從第1個元素開始 # 因為叠代器比較常用, 所以在Python中, 可以直接作用於for in # 內部會自動調用叠代器對象的next() # 會自動處理叠代完畢的錯誤 # 註意事項 # 如果取出完畢,再繼續取, 則會報錯 # StopIteration # 叠代器一般不能多次叠代 import collections nums = [1, 2, 3] result = isinstance(nums, collections.Iterable) print(result) # True result = isinstance(nums, collections.Iterator) print(result) # Flase # 轉為叠代器 it = iter(nums) for v in it: print(v) # 判定 # 元素 in 列表 # 元素 not in 列表 # 比較 # cmp() # 內建函數 # 如果比較的是列表, 則針對每個元素, 從左到右逐一比較 # 左 > 右 # 1 # 左 == 右 # 0 # 左 < 右 # -1 # Python3.x不支持 # 比較運算符 # == # > # < # ... # 針對每個元素, 從左到右逐一比較 # 排序 # 方式1 # 內建函數 # 可以對所有可叠代對象進行排序 # 語法 # sorted(itrearble, key=None, reverse=False) # 參數 # itrearble # 可叠代對象 # key # 排序關鍵字 # 值為一個函數,此函數只有一個參數且返回一個值用來進行比較 # reverse # 控制升序降序 # 默認False # 升序 # 返回值 # 一個已經排好序的列表 # 列表類型 s = "cdefga" result = sorted(s); print(result) #[‘a‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘] s = [2,3,1,4,5] result = sorted(s, reverse = True) print(result) #[5, 4, 3, 2, 1] s = [("a", 16), ("a1",13), ("a2", 14)] result = sorted(s) print(result) #[(‘a‘, 16), (‘a1‘, 13), (‘a2‘, 14)] #按元組的第一個元素來排序 def getKey(x): return x[1] result = sorted(s, key=getKey) print(result) #[(‘a1‘, 13), (‘a2‘, 14), (‘a‘, 16)] # 方式2 # 列表對象方法 # 語法 # list.sort(key=None, reverse=False) # 參數 # key # 排序關鍵字 # 值為一個函數,此函數只有一個參數且返回一個值用來進行比較 # reverse # 控制升序降序 # 默認False # 升序 s = [2,3,1,4,5] res = s.sort() print(res, s) # None [1, 2, 3, 4, 5] 註意和內建函數的方法不同點; # 亂序 # 可以隨機打亂一個列表 # 導入random模塊 # import random # random.shuffle(list) import random list = [1, 2, 3, 4, 5] res = random.shuffle(list) print(res, list) #None [4, 3, 5, 2, 1] 後面序列隨機,修改原序列的本身 # 反轉 # l.reverse() list = [1, 2, 3, 4, 5] res = list.reverse() print(res, list) #None [5, 4, 3, 2, 1] # 切片反轉 # l[::-1] list = [1, 2, 3, 4, 5] res = list[::-1] print(res, list) #[5, 4, 3, 2, 1] [1, 2, 3, 4, 5]

Python 列表的定義及操作