Python基礎(chǔ)之序列類型的方法——列表&元組
序列類型的方法,簡(jiǎn)單的來(lái)說(shuō)就是四個(gè)字:增刪改查。隨著我們學(xué)習(xí)的深入,我們將會(huì)一直圍繞著四個(gè)字來(lái)進(jìn)行程序的編寫(xiě)及實(shí)現(xiàn),接下來(lái)我們就一起學(xué)習(xí)吧!
列表的方法
首先登場(chǎng)的選手是python的列表,列表屬于可變類型,所以它將有完整的增刪改查方法,讓我們一起來(lái)看看具體是什么。
增
增,顧名思意就是可以對(duì)列表進(jìn)行新增元素的操作,python的列表提供了三種新增元素的操作,分別是:append() ,insert(), extend()
append()
首先是append(),它可以將一個(gè)元素追加到列表的末尾。
舉個(gè)栗子:
li = [1, 2, 3, 4, 5]
li.append('hello,world')
print('這是使用了append:', li)
這是使用了append: [1, 2, 3, 4, 5, 'hello,world']
上述代碼中,我們使用的是li.append('新增內(nèi)容')的方式來(lái)為列表添加元素
li.append()使列表li調(diào)用自身的方法append(),這樣就可以在列表的末尾添加一個(gè)新的元素。
insert()
接下來(lái)是insert(),append()是排隊(duì),那insert()就是插隊(duì)的意思啦,它可以將一個(gè)元素插入到列表的自定位置:
li1 = [7, 8, 9, 10]
li1.insert(3, 'helloworld')
print('這是使用了insert:', li1)
這是使用了insert: [7, 8, 9, 'helloworld', 10]
這樣就將字符串helloworld插入到了列表的第四個(gè)位置里。
extend()
上面兩個(gè)方法是對(duì)單個(gè)元素進(jìn)行增加,如果我們需要增加多個(gè)元素怎么辦?
那就可以使用我們的extend()來(lái)進(jìn)行添加,extend()可以將序列中的每個(gè)元素添加到末尾:
l1 = [1, 2, 3]
l2 = [3, 4, 5, 6, 7, 8, 9]
l1.extend(l2)
print(l1)
[1, 2, 3, 3, 4, 5, 6, 7, 8, 9]
上面的代碼先定義了兩個(gè)列表l1和l2,然后使用l1.extend(l2),將l2的每個(gè)元素添加到了l1的末尾。
刪
增加講完了,接下來(lái)進(jìn)行刪除操作,刪除也有對(duì)應(yīng)的四個(gè)方法:del(),pop(),remove(),clear()
del()
del()是單獨(dú)的方法,不需要通過(guò)列表本身來(lái)進(jìn)行調(diào)用,可以直接使用:
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
del(li[0]) # 如果刪除列表中某個(gè)值請(qǐng)?zhí)顚?xiě)對(duì)應(yīng)的下標(biāo)號(hào)
print('使用了del',li)
使用了del ['e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
上述代碼刪除了li[0],但是請(qǐng)注意,如果不進(jìn)行索引的話,默認(rèn)會(huì)將這個(gè)變量刪除,請(qǐng)謹(jǐn)慎使用:
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
del(li)
print(li)
NameError: name 'li' is not defined
這就是刪除了整個(gè)變量,再打印這個(gè)變量時(shí)就會(huì)提示變量未定義
pop()
pop()方法不帶參數(shù)的話刪除默認(rèn)刪除最后一個(gè)元素,帶參數(shù)的話則刪除指定的下標(biāo)值:
# pop:不帶參數(shù)刪除最后一個(gè)元素
li1 = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li1.pop()
print('使用了pop不帶參數(shù)',li1)
使用了pop ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l']
# 帶參數(shù)刪除指定下標(biāo)
li1 = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li1.pop(0) # 刪除第一個(gè)元素
print('使用了pop帶參數(shù)',li1)
使用了pop帶參數(shù) ['e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
pop()還有個(gè)神奇的地方,它可以讓你需要?jiǎng)h除的參數(shù)取出來(lái)繼續(xù)使用,使用完了再進(jìn)行刪除:
li1 = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
a = li1.pop(0)
if a == 'h':
print('helloworld')
print('使用了pop帶參數(shù)',li1)
helloworld
使用了pop帶參數(shù) ['e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
上述代碼使用pop()刪除了第一個(gè)元素,然后使用第一個(gè)元素進(jìn)行了一個(gè)簡(jiǎn)單的判斷,說(shuō)明pop()可以為我們返回刪除的元素,讓我們先使用,使用完再刪除
remove()
remove()用來(lái)刪除一個(gè)指定元素,無(wú)返回值,無(wú)法使用下標(biāo)刪除:
li2 = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li2.remove('l')
print('使用了remove',li2)
使用了remove ['h', 'e', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
上述代碼使用remove()刪除了一個(gè)元素l
clear()
clear()用于清空列表,與del不同的是,它會(huì)為我們保留空列表,而不會(huì)把變量都刪除:
li2 = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li2.clear()
print('使用了clear',li2)
使用了clear []
上述代碼清除了列表后,保留了空列表
改
改的方法就比較簡(jiǎn)單,直接索引出下標(biāo)重新賦值即可:
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li[0] = 'python' # 將字符串python賦值給li[0]
print(li)
['python', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
這里就對(duì)li[0]進(jìn)行了重新賦值
查
有通過(guò)index查詢指定元素返回對(duì)應(yīng)下標(biāo),也可以使用count來(lái)計(jì)算該元素出現(xiàn)過(guò)的次數(shù):
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
print('查詢對(duì)應(yīng)下標(biāo)', li.index('h'))
查詢對(duì)應(yīng)下標(biāo) 0
print(li[0]) #通過(guò)下標(biāo)查詢對(duì)應(yīng)的元素
h
# count:查詢對(duì)應(yīng)元素在列表中出現(xiàn)的次數(shù),如果列表中沒(méi)有該元素,則返回0
print('查詢?cè)爻霈F(xiàn)過(guò)的次數(shù)', li.count('o'))
查詢?cè)爻霈F(xiàn)過(guò)的次數(shù) 2
其他方法
除了增刪改查,列表中還有其他的方法復(fù)制copy()、倒敘排列reverse()、從小到大排列sort()
復(fù)制
# 復(fù)制:copy 復(fù)制一個(gè)全新的列表,復(fù)制后兩個(gè)表的內(nèi)存地址不同,不會(huì)互相影響,
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
print("這是原來(lái)的列表", id(li))
這是原來(lái)的列表 139786018649480
li1 = li.copy()
print("這是一個(gè)復(fù)制出來(lái)的列表", id(li1), li1)
這是一個(gè)復(fù)制出來(lái)的列表 139786021304584 ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
倒敘排列
li = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
li.reverse()
print("對(duì)列表倒敘排序", li)
對(duì)列表倒敘排序 ['d', 'l', 'r', 'o', 'w', 'o', 'l', 'l', 'e', 'h']
從小到大排列
sort()方法可以將數(shù)字類型的進(jìn)行從小到大的排列,一般也用于同類型的排列
li2 = [1, 5, 12, 8, 23, 10, 11, 500]
li2.sort()
print("對(duì)列表從小到達(dá)排序", li2)
對(duì)列表從小到達(dá)排序 [1, 5, 8, 10, 11, 12, 23, 500]
元組方法
元組作為不可變類型,只能查和刪,如果需要其他操作需要轉(zhuǎn)換成列表
查
# 查,與列表相同,index返回下標(biāo)和count計(jì)算元素出現(xiàn)的個(gè)數(shù)
a = (1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6)
# 使用index返回元素的下標(biāo)值
print(a.index(3))
2
也可以使用索引查詢對(duì)應(yīng)的值
print(a[0])
1
# 使用count返回元素出現(xiàn)的個(gè)數(shù)
print(a.count(6))
7
刪
只能刪除整個(gè)元組,無(wú)法使用下標(biāo)值,刪除后再使用會(huì)提示沒(méi)有定義變量
a = (1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6)
del (a)
print(a)
NameError: name 'a' is not defined
元組只有查和刪的方法,如果需要修改應(yīng)先轉(zhuǎn)成列表修改再轉(zhuǎn)回元組,但是不建議這么做,因?yàn)樾薷倪^(guò)的元組就已經(jīng)不是原來(lái)的那個(gè)元組了,而且設(shè)置元組也是為了這組數(shù)據(jù)不希望受到修改
總結(jié)
以上就是關(guān)于列表&元組的方法了,有興趣的小伙伴可以自己嘗試一下。