Python入門之列表 列表的常規操作2

2021-08-27 03:02:58 字數 4069 閱讀 7076

下面介紹列表的查詢、遍歷、判定、排序、亂序及反轉操作,列表的其他常規操作如增加刪除元素等詳見我的上篇部落格。

# 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...