列表和元組的操作
列表
list(字符串) #可以轉為列表,但是括號內不能是整形int,否則會報錯
isinstance(list1,list) #list1這個地方是變量,後面list是變量類型,同理可以放入int、float、str、dict、set等,判斷變量的類型正確為True,錯誤返回False
#增加
append(‘gg‘) 在列表的末尾加上‘gg‘
insert(0,‘gg‘) 在列表的第0個位置加上‘gg‘,之後的位置順延
#刪除
del 是直接刪除,無法再用該元素
pop() 是彈出棧,括號中無數字則彈最後一個,可以繼續使用彈出元素,如果有數字則刪除對應元素
remove() 刪除括號內的元素,在不知道該元素位置的時候使用,只刪除一次,如果列表中有多個相同元素,需要使用循環來判斷是否刪除了所有的值
如果刪除的值不存在,報錯
ValueError: list.remove(x): x not in list
list1.clear() #清空整個列表裏面的元素
set()函數是刪除重復項
list1 = [1,2,2,‘a‘,‘a‘]
print(set(list1)) #返回集合{1, 2,‘a‘},不是返回列表[1,2,‘a‘]
#修改
list1[0] = "ABC" #直接改某個元素的值
#查詢定位
list1 = [‘@‘, ‘3‘, ‘2‘, ‘1‘, ‘C‘, ‘A‘, ‘A‘, ‘y‘, ‘m‘]
print (len(list1)) #打印列表長度,9
print (list1[0:1]) #打印序號0-1的字符,即[‘@‘],不含1,包頭不包尾
print (list1.find("2",1,4)) #查詢"2" 所在的序列,不能這麽做,會報錯
會報錯AttributeError: ‘list‘ object has no attribute ‘find‘
但是index可以
print (list1.index("2",1,4)) #返回2
index沒找到,返回ValueError: ‘A‘ is not in list
list1[1:6:2] 返回索引1到6的值,但是步長是2
list1[4:6]= ‘alex li‘ 把4到6的元素改為alex li,不夠的元素自動添加,alex li 會被逐個拆開為字母和空格的組合
[‘@‘, ‘3‘, ‘2‘, ‘1‘, ‘a‘, ‘l‘, ‘e‘, ‘x‘, ‘ ‘, ‘l‘, ‘i‘, ‘A‘, ‘y‘, ‘m‘]
print (list1.count("dd")) #返回0,因為不存在
print (list1.count("A")) #返回2,因為出現2次
print (list1.count("A",0,5)) #會報錯,在列表中不能指定範圍,列表的count操作只有一個參數,字符串可以指定範圍
TypeError: count() takes exactly one argument (3 given)
enumerate 枚舉,將索引號和元素分別成對提取出來
for index,item in enumerate(item_list):
#排序
sort() 對列表永久排序,按ASC2的字母排序,區分大小寫,大寫在前,ABab
如果連續執行以下兩行指令:
print (list1.sort()) #返回None,註意不返回排序結果
print (list1) #返回[‘1‘, ‘2‘, ‘3‘, ‘@‘, ‘A‘, ‘A‘, ‘C‘, ‘m‘, ‘y‘]
sorted() 對列表永久排序,註意語法不一樣
sorted(terable,key,reverse) #需要排序的列表放在括號內
sorted(iterable[, cmp[, key[, reverse]]])
參數說明:
- iterable -- 可叠代對象。
- cmp -- 比較的函數,這個具有兩個參數,參數的值都是從可叠代對象中取出,此函數必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。
- key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可叠代對象中,指定可叠代對象中的一個元素來進行排序。
- reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)
sort (self,key,reverse) #用點連接,跟在需要排序的列表後面
如果連續執行以下兩行指令:
print (sorted(list1)) #返回[‘1‘, ‘2‘, ‘3‘, ‘@‘, ‘A‘, ‘A‘, ‘C‘, ‘m‘, ‘y‘]
print (list1) #返回[‘@‘, ‘3‘, ‘2‘, ‘1‘, ‘C‘, ‘A‘, ‘A‘, ‘y‘, ‘m‘]
reverse() 反轉列表元素的排列順序,永久修改
#復制
列表的復制
new_list = old_list[:] #切片復制,創建了新的列表並逐一復制元素進去
如果是
new_list = old_list #指向復制,兩個列表名稱指向的是同一組列表元素
類似的做法
list2 = list1.copy()
#拼接
list1.extend(list2)
list2會跟在list1後面
#指定切片或分離
split() partition() 這些是操作字符串的函數,不能操作列表
使用具體的索引號來對列表進行切片即可
元組
元組是元素不可修改的列表
#增加#刪除#排序#拼接
不可修改,就無法增加、刪除某個元素
也無法排序,臨時排序也不行
無法拼接兩個元組
#修改
元組的修改簡單粗暴直接給這個元組重新賦值
tuple1 = (20,30) #這是舊元組
tuple1 = (30.40) #這是新元組,繼續用同一個名字
#查詢定位
元組的查詢定位基本與列表一致
tuple1 = (‘@‘, ‘3‘, ‘2‘, ‘1‘, ‘C‘, ‘A‘, ‘A‘, ‘y‘, ‘m‘)
print (len(tuple1)) #打印列表長度,9
print (tuple1[0:1]) #打印序號0-1的字符,即[‘@‘],不含1,包頭不包尾
不能用find函數(字符串專用),但是index可以
print (tuple1.index("2",1,4)) #返回2
index沒找到,返回ValueError: tuple.index(x): x not in tuple
print (tuple1.count("dd")) #返回0,因為不存在
print (tuple1.count("A")) #返回2,因為出現2次
print (tuple1.count("A",0,5)) #會報錯,在列表中不能指定範圍,列表的count操作只有一個參數,字符串可以指定範圍
TypeError: count() takes exactly one argument (3 given)
#復制
與列表的復制不同,原先表示指向復制的方法,可以用來復制元組
tuple2 = tuple1
不過一般不會這麽用,因為元組不可變的,直接用tuple1元組即可
函數copy()只能用在列表裏,不能用到元組上
否則會報錯
AttributeError: ‘tuple‘ object has no attribute ‘copy‘
#指定切片
使用具體的索引號來對元組進行切片即可
切片的括號還是[]
print (tuple1[0])
列表和元組的操作