最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?一篇文章看懂Python集合與字典數(shù)據(jù)類型

 更新時間:2022年03月07日 16:49:02   作者:酷爾。  
集合并不是一種數(shù)據(jù)處理類型,而是一種中間類型。集合(set)是一個無序、不重復的元素序列,經(jīng)常被用來處理兩個列表進行交并差的處理性。本文將詳細講解集合的一些常用方法,感興趣的可以了解一下

前言

集合數(shù)據(jù)類型是沒有順序的簡單對象的聚集,并且集合中的元素不會重復。Python中的集合包括可變集合對象(set)與不可變集合對象(frozenset)。字典是具有鍵值對的數(shù)據(jù)結(jié)構(gòu)。每個鍵不能重復,并且可以根據(jù)字典的鍵查詢到他的值。這兩位好兄弟外觀組成都是使用{}進行包裹。并且底層原理有一定的相通性。他們的底層實現(xiàn)一般都是用了哈希表。

一、集合類型??

1.定義

  • 集合數(shù)據(jù)類型分為可變集(set)與不可變集(frozenset)兩種。
  • 集合中的元素不可以重復,并且無序。(因為對象存在集合內(nèi)是以哈希對象的形式存儲的)
  • 集合內(nèi)放置的應該是不可變對象(數(shù)值型數(shù)據(jù)類型、字符串元組、不可變集合)
  • 空集合的的表示方法是set()。{}是空字典的表示方式。
  • 可以使用in /not in判斷元素是否在集合內(nèi)。

2.集合使用方式

集合的使用方式與中學時代學到的集合有些相似。也就是說數(shù)學上的集合交、并、補、差運算可以運用到Python集合上。表示方式如下

假設集合有A={1,2,3}、B={2,3,4}、C={3,4,5}、D={1,2,3,4}四個 交:

A|B|C={3}

并:

A&B={1,2,3,4}

補:

A^D={4}

A-B={1}

可以使用這些方法進行是否有相同元素,是否具有包含關系的判斷

3.集合推導式

前面講列表的時候講到了列表推導式,可以直接生成一個自己的想要的列表。今天咱就講一下集合列表推導式

推導式語法:

{變量通式 for i in 序列 [判斷條件]}

例如下式求偶數(shù)的平方

print({i*i for i in range(10) if i%2==0})

4.可變集合

可變集合用set進行創(chuàng)建(可變集合底層依舊是哈希表,所以只能存儲不可變對象) print(set([1,2,3]))

創(chuàng)建的對象有一系列的方法。add(x)、remove(x)、discard(x)、pop()、clear() 上面幾個函數(shù)分別對應的增加元素、移除元素(不存在拋異常)、移除元素、隨機彈出元素、清空集合

實際操作代碼:

'''
集合set,底層依舊是哈希表,無序不可重復
'''
# 操作(增刪改,創(chuàng)建集合)
# 聲明方式一
s1={123,'hello',666,888,'Tom'}
# 聲明方式二
s2=set({123,'hello',666,888,'Tom'})
# 集合生成式
s3={i*i for i in range(10)}
print(s1,id(s1),type(s1))
print(s2,id(s2),type(s2))
print(s3)
# 判斷集合是否相同(比較的是內(nèi)部含有的元素)
print(s1==s2)
print(s1==s3)

# 增
# 適合一個一個的增加
s1.add(123123)
print(s1)
# 適合增加多個元素
# 將字符串直接加進去
s1.update(['world','milk'])
s1.update(('world1','milk1'))
# 將字符串拆開加進去
s1.update('world3','milk3')
print(s1)

# 刪
# 刪除傳進去的元素,沒有的話拋出異常
# s1.remove(777)
# 刪除元素,沒有的話不拋異常None
s1.discard(888)
print(s1.discard(777))
print(s1)
# 隨機刪除一個元素(不能進行參數(shù)的傳遞)
s1.pop()
# 清除所有元素
s1.clear()
# 空集合
print(s1)

'''集合之間的關系,交,并,差集,并集差集子集,超集,元素是否相同'''
s4=set(s2)
s5=set(s2)
s4.add('joso')
s5.add('pink')
# s2是否是s4的子集
print(s2.issubset(s4))
# s2是否是s4的超集
print(s2.issuperset(s4))
# 兩集和元素是否都不相同
print(s5.isdisjoint(s4))

# 交集
print('--------------------')
print(s4.intersection(s2))
print(s4 & s2)
# 并集
print('--------------------')
print(s4.union(s5))
print(s4 | s5)
# 差集
print(s4.difference(s5))
print(s4-s5)
# 對稱差集
print(s4.symmetric_difference(s5))
print(s4 ^ s5)

二、字典類型??

1.定義

字典是鍵和值的映射關系,所以有時也稱為映射數(shù)據(jù)類型。字典的鍵是哈希數(shù)據(jù)類型(不可變),值是任意類型,并且在一個字典內(nèi)每種鍵只能有一個,值可以重復可以任意取。可以通過鍵獲取到相應的值。

鍵值對的一般形式就是 鍵:值

所以字典的一般形式就是{鍵1:值,鍵2:值,鍵3:值…}

創(chuàng)建字典可以直接使用字面量{鍵1:值,鍵2:值,鍵3:值…},也可以使用dict進行創(chuàng)建。

dict支持字典轉(zhuǎn)字典、支持序列轉(zhuǎn)字典。

2.字典的使用方式

字典使用的時候可以單獨的獲取鍵、值與【鍵、值】列表

方式是:

  • dic.keys() #獲取鍵列表
  • d.values() #獲取值列表
  • d.items() #獲取元組形式的鍵值列表

字典可以使用in / not in判斷字典內(nèi)是否含有某鍵。

字典對象有一系列方法:

  • clear() #清空元素
  • copy() #復制字典
  • get(k) #根據(jù)鍵獲取值
  • pop(k) #如果鍵存在則刪除并返回值,不存在拋出異常
  • pop(k,v)#如果鍵存在則刪除并返回值,不存在返回V
  • setdefault(k,v) #如果k鍵存在則返回其值,如果不存在添加k鍵并賦值None
  • update() #傳入字典或鍵值對更新操作

3.字典推導式

字典推導式與列表推導式、集合推導式使用方法類似,只不過他有兩個值 {k:v for k in …for v in …}

{x:x*x for x in range(10) if x%2==0}
{x:y for x in range(10) for y in range(10,20)}

4.代碼練習

'''
對比學習,字典與列表有什么不同呢?
列表是方括號 列表內(nèi)的數(shù)據(jù)是單個存在的 有序 可以重復出現(xiàn)
字典是花括號 字典內(nèi)的數(shù)據(jù)是成對存在的 無序 鍵值對不可亂寫,并且鍵重復的話,值會進行覆蓋

字典內(nèi)的數(shù)據(jù)沒有順序,底層的原理是哈希表,用哈希表實現(xiàn)鍵值對應
'''
# 字典的創(chuàng)建方式一
# 字典內(nèi)的同一個鍵對應不同值時,會將前面的值進行覆蓋
s={'name':'張三','paassward':'888888','name':'瑪卡巴卡'}
# 字典的創(chuàng)建方式二
ss=dict(user='pig',passward='123123')
# 字典的創(chuàng)建方式三(列表進行創(chuàng)建)
t1=['username','passward']
t2=['Tom','1980']
# upper,lower是對字符串進行全部大寫,全部小寫的函數(shù)
sss={t1.upper():t2.lower() for t1,t2 in zip(t1,t2)}
# 打印顯示字典類型
print(s,type(s))
print(ss,type(s))
print(sss,type(s))
# 字典元素的增加/修改
# 由于每個鍵在字典內(nèi)只能有一個,所以當一個鍵對應新的值時,會產(chǎn)生覆蓋
    # 也就是對原來鍵對應的值進行了修改
s['name']='李四'
print(s)
# 或者用一個原來沒有的鍵,產(chǎn)生新增的效果
s['age']='20'
print(s)

# 獲取字典值
# 獲取所有鍵
keyS=s.keys()
print(keyS)
# 獲取所有值
valueS=s.values()
print(keyS,valueS)
# 獲取所有鍵值對
iteM=s.items()
print(iteM)
# 給鍵獲取值 字典名[key]-----找不到會報錯
print(s['paassward'])
# 給鍵獲取值 字典名.get()----找不到可以指定打印什么
print(s.get('paassward'))
print(s.get('qwe','沒找到'))
# 判斷是否在字典內(nèi)(鍵值都可以判斷)
print('paassward' in s,'888888' in s)
# 字典元素的清除
del s['name']
print(s)
# 清空字典
s.clear()
print(s)

# 字典的遍歷
# temp作為字典內(nèi)的鍵,然后在字典內(nèi)尋找值
for temp in ss:
    print(temp,ss[temp],ss.get(temp))

總結(jié)

集合與字典到此就結(jié)束啦,這兩種數(shù)據(jù)類型比較簡單、但是內(nèi)置的方法比較多。重點掌握住他們的特點:可變不可變之類的。相信大家可以玩轉(zhuǎn)這兩種數(shù)據(jù)類型。

到此這篇關于Python?一篇文章看懂Python集合與字典數(shù)據(jù)類型的文章就介紹到這了,更多相關Python 集合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

鄂托克前旗| 交城县| 平远县| 含山县| 县级市| 台北县| 太仓市| 泽州县| 华亭县| 华坪县| 洞口县| 赣榆县| 额济纳旗| 屯门区| 宜州市| 丰城市| 孟连| 彝良县| 二连浩特市| 青龙| 揭西县| 宝丰县| 年辖:市辖区| 宁陵县| 左云县| 屯昌县| 甘肃省| 新建县| 普宁市| 南江县| 高台县| 金秀| 漳浦县| 安康市| 怀安县| 潍坊市| 平远县| 师宗县| 西青区| 宝坻区| 波密县|