day 07 元組,字典和集合等資料型別介紹
元組:就是一個不可變的列表
1.用途,當我們需要記錄多個值,並且沒有更改的需求的時候,應該使用元組
2定義方式:使用,在 ( ) 中分隔開多個任意型別的值
注:t=("egg",),如當列表中只有一個值的時候,在末尾加上 , 逗號
t=tuple("hello") # 元組和列表的型別的型別轉換相同,可將任意可迭代型別轉換成 元組型別
常用操作+內建方法
1.按照索引取值,因為元組是不可變型別,所以只能取值
.count() 統計某個元素出現的次數
.index() 計算出某個元素出現的位置的索引值
總結:元組是不可變型別
字典:記錄多個不同屬性的值
定義方式:在{} 內使用逗號分隔開多個元素,每個元素都是key:value的形式,其中value可以是任意型別,但是key只能是不可變型別
資料型別轉換
l1=(["name","haha"],["age","18"],("gender","male"))
dic=dict(l1) # 可以直接將l1 轉換成一個字典
dic1=dict(x=1,y=2,z=3) # 也可以直接將括號內的內容轉換成字典
常用操作+方法
1按key取值:可存可取
dic={'name': '哈哈', 'age': 18, 'gender': 'male'}
dic["name"] #取出元素對應的值,如果指定的key,在字典中不存在則報錯
dic["name"]="xixi" #如果key對應的值存在,則修改字典中的已存在鍵值對,如果不存在,則新增,新的鍵值對
2len
計算出字典中存在的鍵值對的數量
3in和not in 判斷得是字典的key
4刪除
del dic["name"] #
t=dic.popitem() #隨機彈出一個鍵值對,返回值是一個鍵值對的元組
t=dic.pop("name") # 通過給定的key,彈出一個元素,返回值是key對應的value
5鍵keys(), 值values(),鍵值對items()
dic.keys() #取出字典的所有的key的值,在python2中直接返回一個列表,在python3 不是直接返回列表,可以通過for迴圈取出
dic.values() #取出字典的所有的value值
dic.items() #取出字典中所有的鍵值對,一個鍵值對儲存在一個元組中
5. get取值
get() 取值,如果key在字典中,則返回key對應的value.如果key不存在,不會報錯,返回一個None
需要掌握的操作
dic.formkey(iter,char)
通過第一個引數給定的可迭代物件,作為key,第二個引數作為預設值,快速的構造一個字典
方法需要通過使用字典呼叫{} 不會改變呼叫字典,返回一個構造完成的字典,所以呼叫字典的狀態並不會影響呼叫方法的結果
dic.updata
使用updata()中給定的字典更新呼叫的字典,如果key已經存在則使用引數中的key對應的value值,更新源字典,如果key不存在,則新增
dic.setdefault(key,value) # 執行完畢後的結果時保證字典中有 這個值存在
引數是key和value 如果呼叫字典中不存在key,則將引數中的key,value新增到字典中,返回值,是引數中的vlaue值
如果呼叫字典中key,已經存在,則不做任何操作,直接將key對應的value返回
集合set
用途:
做關係運算
去重
定義方式:在{} 中使用,逗號分隔開多個值,多個元素必須滿足以下要求
每一個元素必須是不可變型別
集合內的元素不能重複
集合無序
注意: d={} 預設d是字典型別, d=set{} 則d是集合型別
常用操作+內建的方法
關係運算
pythons={'李鐵蛋','張全蛋','王銅蛋','趙銀蛋','oldboy','艾利克斯'}
linuxs={'kevin','egon','tank','艾利克斯','王銅蛋'}
求即報名python課時又報名linux課程的學員:交集
python & linuxs 返回值是一個字典型別
pythons.intersection(linuxs)
求所有的學員姓名:並集
pythons | linuxs
python.union(linuxs)
求只報名python課程的學員:差集
pythons-linuxs
python.difference(linuxs)
求沒有同時報名兩門課程的學員:對稱差集
python^linuxs
pythons.symmetric_differcnce(linuxs)
父集/子集 :包含和被包含的關係
只有一個集合中的元素包含另一個集合中的全部元素的時候,才會有子集和父集的概率
set1={1,2,3}
set2={1,2}
set1>=set2 # True
set1.issuperset(set2) # True
掌握的操作
set1.update({2,3,4}) #使用引數中的集合更新源集合
set1.add(1) #新增一個值
set1.pop() 隨機彈出一個值
set1.remove(2) 彈出2這個值
set1.difference_update(set2) 將set1和set2做差集操作後的結果,給賦值給set1
set.discard() # 如果給定的引數是集合中的一個成員則把他刪除,如果不是則什麼也不做,無返回值
在條件判斷中所有的資料都會轉換成布林值
只需記住布林值為假的資料型別即可,0,None,空