1. 程式人生 > >列表和元組的操作

列表和元組的操作

是否 attr sorted 清空 地方 one err 包頭 操作

列表

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])

列表和元組的操作