下面介紹列表的查詢、遍歷、判定、排序、亂序及反轉操作,列表的其他常規操作如增加刪除元素等詳見我的上篇部落格。
# 8、查詢操作
# 8.1、獲取某個元素 name[index],通過索引獲取
list1 = [1, 3, 5, 8]
print(list1[-1]) # 查詢最後乙個元素,結果為8
# 8.2、獲取元素的索引
# name.index(value, start, stop) 獲取數值為value的元素的索引,後兩個引數為查詢範圍,
# 如果有多個元素一樣,則會返回從左往右查詢到的第乙個指定數值元素的下標
list1 = [1, 3, 5, 8]
print(list1.index(3)) # 結果為1
print(list1.index(10)) # 列表中沒有這個元素,顯示valueerror: 10 is not in list
# 8.3、獲取指定元素的個數 name,count(object)
list1 = [1, 3, 5, 3, 8]
print(list1.count(3)) # 結果為2
# 8.3、獲取多個元素 通過切片的方式,與字串的切片操作類似,形式為
# name[start, stop, step],範圍為[start, stop),step預設為1
list1 = [1, 3, 5, 3, 8]
print(list1[1:4]) # 結果為[3, 5, 3]
print(list1[::-1]) # 結果為[8, 3, 5, 3, 1],當step為負數時從右往左查詢,可以用來翻轉列表
# 9、遍歷操作
# 9.1、根據元素進行遍歷
list1 = [1, 3, 5, 7, 8]
currentindex = 0
for num in list1:
print(list1.index(num, currentindex), num) # 輸出索引及其對應的元素
currentindex += 1
# 9.2、根據索引遍歷列表
list1 = [1, 3, 5, 7, 8]
count = len(list1) # 獲取列表長度
nums = range(count) # 建立乙個新的列表放原來列表的索引
for num in nums:
print(num, list1[num]) # 輸出索引及其對應的元素
# 9.3、通過建立對應的列舉物件 enumerate(sequence)
list1 = ["a", "b", "c", "d"]
enu = enumerate(list1) # 建立相應的列舉物件
print(list(enu)) # 把列舉物件列表化後輸出結果為[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
for idx, val in enumerate(list1):
print(idx, val) # 分別列印出列表中的索引及其對應的元素
# 9.4、使用迭代器進行遍歷
# 判斷乙個物件是否是可迭代物件,判斷依據是能否作用於for..in,
# 字串、列表、元組等都為可迭代物件
import collections
list1 = [1, 2, 3]
result = isinstance(list1, collections.iterable)
print(result) # 結果為true,當判定結果為true時則為可迭代物件
# 判斷乙個物件是否是迭代器
# 迭代器是指可以記錄遍歷位置的物件,從第乙個元素開始,往後通過next()函式進行遍歷,
# 只能往前不能往後,
# 遍歷依據是能否作用於next()函式,判斷方法如下:
import collections
list1 = [1, 2, 3]
result = isinstance(list1, collections.iterator)
print(result) # 結果為false,可迭代物件不一定是迭代器,但迭代器一定是可迭代物件
# 迭代器的特性:
# 1、僅僅在迭代到某個元素時才處理該元素,在此之前,元素可以不存在,在此之後,
# 元素可以被銷毀,適用於一些巨大或無限的資料集;
# 2、提供了乙個統一的訪問集合的介面,不同資料型別遍歷的方式不同,如果先轉換為迭代器再訪問,
# 則可以統一介面。
# 可以通過iter(iterable)函式將可迭代物件轉換為迭代器
# 使用迭代器進行遍歷,先建立迭代器物件,再通過for迴圈遍歷
list1 = [1, 2, 3]
it = iter(list1) # 轉換為迭代器,遍歷時指標會自動往後移動
for i in it:
print(i) # 遍歷,結果為輸出各元素,迭代器只能遍歷一次,若想再次遍歷需重新建立
# 10、判定元素是否在列表中,利用in或not in
list1 = [1, 2, 3]
print(1 in list1) # 結果為true
print(8 not in list1) # 結果為true
# 11、排序
# 方式1:利用內嵌函式sorted(iterable, key = none, reverse = false)進行排序,
# iterable是可迭代物件,key是關鍵字,reverse是公升降序,預設公升序,
# 返回排好序的列表,但原列表沒有發生變化
list1 = [("xx2", 1), ("xx1", 2), ("xx3", 3), ("xx4", 5)]
print(sorted(list1)) # 結果為[('xx1', 2), ('xx2', 1), ('xx3', 3), ('xx4', 5)]
# 由上面的結果可以看出,如果沒有指定關鍵字,只會針對每個元組中的第乙個元素進行排序
def getkey(x):
return x[1] # 返回元組的第二個元素
result = sorted(list1, key=getkey)
print(result) # 結果為[('xx2', 1), ('xx1', 2), ('xx3', 3), ('xx4', 5)]
# 方式2:利用列表中的排序函式name.sort(key=none, reverse=false),返回none,且原列表會變化
list1 = [("xx2", 1), ("xx1", 2), ("xx3", 3), ("xx4", 5)]
print(list1)
# 結果為[('xx1', 2), ('xx2', 1), ('xx3', 3), ('xx4', 5)],只是對元組的第乙個元素進行排序
def getkey(x):
return x[1] # 返回元組的第二個元素
result = list1.sort(key=getkey)
print(result, list1) # 結果為none [('xx2', 1), ('xx1', 2), ('xx3', 3), ('xx4', 5)]
# 12、亂序,隨機打亂乙個列表,利用random.shuffle(list),返回none
import random
list1 = [1, 2, 3, 4]
res = random.shuffle(list1)
print(res, list1) # 結果為none [1, 4, 2, 3],即說明原列表發生了改變
# 13、反轉
# 方法1:利用切片,原列表沒有發生改變
list1 = [1, 2, 3, 4]
print(list1[::-1]) # 結果為[4, 3, 2, 1]
# 方法2:利用list,reverse(),返回none,原列表發生改變
print(list1.reverse(), list1) # 結果為none [4, 3, 2, 1]
Python入門之列表
python中的列表類似於c語言中的陣列,下面通過例項說明介紹幾種常用的使用方法。1.空列表的建立 empty print empty 2.列表中元素的檢視 words a b c print words 2 c print words 3 traceback most recent call la...
Python快速入門(五)之列表
列表 一 建立列表 可以用 來建立乙個列表,列表中的元素之間使用逗號分隔。示例 建立列表list hello 金融 理財 123 list hello 金融 理財 123 type list class list list hello 保險 理財 123 二 獲取元素 可以使用索引獲取列表中的元素,...
Python學習入門之列表(一)
列表是由一系列按特定順序排列的元素組成的,跟其他語言的陣列類似 names zr hc ws hj fz nums 1,2,3,9,4,5,8,7,6 可以直接使用print函式直接將陣列所有函式列印出來 print names 訪問列表元素,索引從0而不是從1開始,索引還可以使用負數,比如索引 1...