Python 列表 元組 字典 集合 區別(二)

2021-08-18 02:34:23 字數 3547 閱讀 2353

元組也是存一組資料,只是一旦建立,便不能修改,所以又叫唯讀列表。元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。

tup1 = (1,2,3,4,5)

tup2 = ('frui', 27)

tup3 = "a", "b", "c", "d";

tup4 = () #建立空元組

元組中只包含乙個元素時,需要在元素後面新增逗號

tuple5 = (50,) #元組中只包含乙個元素時,需要在元素後面新增逗號

tuple6 = (50)

#如果不加逗號,則定義的不是tuple,是50這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,python規定,這種情況下,按小括號進行計算。

元組只有兩個方法:count和index

不可變的tuple有什麼意義?因為tuple不可變,所以**更安全。如果可能,能用tuple代替list就盡量用tuple。

字典

字典是另一種可變容器模型,且可儲存任意型別物件。

字典的每個鍵值對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:

d =

鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。

info =

print (info)

#修改info['stu2'] = "xiao hu" 

#增加info['stu5'] = "xiao fang"

#刪除info.pop('stu2')

del info['stu1']

info.popitem() #隨機刪乙個

print (info)

info.clear() #清空字典所有條目

#查詢print ('stu2' in info) #判斷是否存在,存在則返回true,否則返回false

print (info['stu1']) #如果乙個key不存在,就報錯,get不會,不存在只返回none

#dict.get(key, default=none)

#返回指定鍵的值,如果值不在字典中返回default值

#比較安全的查詢方法

print (info.get('stu6')) 

#其他print (info.values()) #列印所有的值(即除了key)

print (info.keys()) #列印所有的key

print (info.items()) 

list5 = list(info.items()) #把字典轉化為列表

# dict.setdefault(key, default=none)

# 和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default

info.setdefault ('class3',)

print (info)

info.setdefault ('class1',)

print (info)

#迴圈列印

for i in info:

print (i,info[i])

for k,v in info.items():

print (k, v)

#多級字典巢狀及操作

info = ,

'class2':

}info['class1']['stu1'][1] = 18

print (info)

#dict.fromkeys(seq[, val]))

# 建立乙個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值

eg:print (dict.fromkeys([6,7,8],'test'))

c = dict.fromkeys([6,7,8],[1,])

c[6][1]['name'] = 'sorui'

print (c)

#update方法

info =

b =

print (info)

info.update(b)

print(info)#

為什麼dict查詢速度這麼快?

因為dict的實現原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某乙個字,乙個辦法是把字典從第一頁往後翻,直到找到我們想要的字為止,這種方法就是在list中查詢元素的方法,list越大,查詢越慢。

第二種方法是先在字典的索引表裡(比如部首表)查這個字對應的頁碼,然後直接翻到該頁,找到這個字。無論找哪個字,這種查詢速度都非常快,不會隨著字典大小的增加而變慢。dict就是第二種實現方式。

和list比較,dict有以下幾個特點:

無序查詢和插入的速度極快,不會隨著key的增加而變慢;

需要占用大量的記憶體,記憶體浪費多。

而list相反:

查詢和插入的時間隨著元素的增加而增加;

占用空間小,浪費記憶體很少。

所以,dict是用空間來換取時間的一種方法。

dict可以用在需要高速查詢的很多地方,在python**中幾乎無處不在,正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變物件。這是因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(hash)。

要保證hash的正確性,作為key的物件就不能變。在python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key

在python set

是基本資料型別

的一種集合

型別,它有可變集合(set())和不可變集合(frozenset)兩種。建立

集合set

、集合set新增

、集合刪除、交集

、並集、差集

的操作都是非常實用的方法。

集合是乙個無序的,不重複的資料組合,它的主要作用如下:

去重,把乙個列表變成集合,就自動去重了

關係測試,測試兩組資料之前的交集、差集、並集等關係

常用操作

#去重list1 = [3,2,1,4,5,6,5,4,3,2,1]

print (list1, type(list1))

list1 = set(list1)

print (list1, type(list1))

list2 = set([4,5,6,7,8,9])

#交集print (list1.intersection(list2))

#並集print (list1.union(list2))

#差集print (list1.difference(list2))

print (list2.difference(list1))

#子集、父集

print (list1.issubset(list2))

print (list1.issuperset(list2))

list3 = set([4,5,6])

print (list3.issubset(list2))

print (list2.issuperset(list3))

python列表 元組 字典 集合

列表list 用 表示,list是一種有序的集合,可以隨時新增和刪除其中的元素。元組tuple 用 表示,和列表類似,元組也是一種有序列表,雖然tuple和list非常之類似,但是list初始化之後使可以改變的,但是,元組一旦初始化之後就不可以改變。這點與python中的字串類似,所以我們說元組和字...

python列表 元組 字典 集合

一 列表 可變物件 1.列表的資料項不需要具有相同的型別 建立乙個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可 list1 google runoob 1997,2000 print list1 0 list1 0 列表也可以使用切片 原來字串的切片這裡也可以用 print list 1 ...

Python 列表,元組,字典,集合

特點 順序,可新增,修改,刪除建立方法 x 1,2,3,4,5 x list 12345 x 0 1000 取值方法 x 1 2 x 1 方法 實現兩個列表相加 實現列表的複製後相加 value in sequence 檢驗該value是否在列表sequence中 remove value 刪除指定...