集合、list、tuple、dict一樣都可以存放多個值,但是集合主要用於:去重、關係運算
定義:在{}內用逗號分隔開多個元素,集合具備以下三個特點:ps:1:每個元素必須是不可變型別
2:集合內沒有重複的元素
3:集合內元素無序
s = # 本質 s = set()
1:列表型別是索引對應值,字典是key對應值,均可以取得單個指定的值,而集合型別既沒有索引也沒有key與值對應,所以無法取得單個的值,而且對於集合來說,主要用於去重與關係元素,根本沒有取出單個指定值這種需求。
注意2:{}既可以用於定義dict,也可以用於定義集合,但是字典內的元素必須是key:value的格式,現在我們想定義乙個空字典和空集合,該如何準確去定義兩者?
d = {} # 預設是空字典
s = set() # 這才是定義空集合
但凡能被for迴圈的遍歷的資料型別(強調:遍歷出的每乙個值都必須為不可變型別)都可以傳給set()轉換成集合型別
s = set([1,2,3,4])①關係執行符s1 = set((1,2,3,4))
s2 = set()
s3 = set('egon')
print(s,s1,s2,s3)
有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合
(1).交集:取兩個集合的共同部分-->即報名python又報名linux的學生print(pythons &linuxs)
(2).並集合:兩個集合並到一起-->所有學生的姓名
print(pythons | linuxs)
(3).差集:乙個集合減去另乙個集合共同的部分
只學了python的學生:
print(pythons - linuxs)
只學了linux的學生:
print(linuxs - pythons)
(4).交叉補集/對稱差集:兩個集合互相減然後並到一起,取同時沒有學兩門課程的學生。
print(linuxs^pythons)
(5)值是否相等
print(linuxs == pythons)
false
(6)父集:乙個集合是否包含另外乙個集合6.1 包含則返回true
print( > )
true
print( >= )
true
6.2 不存在包含關係,則返回false
print( > )
false
print( >= )
false
(7)7.子集②去重print( < )
true
print( <= )
true
ps:只能針對不可變型別
集合本身是無序的,去重之後無法保留原來的順序
l=['a','b',1,'a','a']s = set(l) #將列表轉成集合
print(set(s))
l_new = list(s)#再將集合轉成列表③其他操作print(l_new)
[1, 'a', 'b'] #去了重複打亂了順序
1、update().>>> s1 =
.>>> s1.update()
.>>> s1
2、add().>>> s1 =
.>>> s1.add(6)
.>>> s1
3、刪除.>>> s1 =
.>>> s1.remove(3)
traceback (most recent call last):
file "", line 1, in
.keyerror: 3
.>>> s1.remove(33)
.>>> s1
.>>> s1.discard(33333)
.>>> s1
.>>> s1.discard('yy')
.>>> s1
.>>> s1.pop()
11.>>> s1
.>>> s1.clear().>>> s1
set()
4.copy().>>> s1 =
.>>> s1.copy()
5.s1.isdisjoint().>>> s1 =
.>>> s2 =
.>>> s1.isdisjoint(s2)
false
6.長度.>>> s=
.>>> len(s)
3
7.成員運算.>>> 'c' in s
true
8.迴圈總結:.>>> for item in s:
... print(item)
...cab
存多個值,可變,無序
.>>> s1 =檔案是作業系統提供給使用者或者應用程式操作硬碟的一種機制.>>> id(s1)
31828672
.>>> s1.add(4)
.>>> id(s1)
31828672
.>>> s1
讀寫檔案----->訪問硬碟
應用程式: open()
作業系統: 開啟檔案
計算機硬體: 硬碟空間
開啟檔案
讀/寫關閉檔案
f=open('a.txt','r',encoding='utf-8') #預設開啟模式就為r開啟檔案,由應用程式向作業系統發起系統呼叫open(...),作業系統開啟該檔案,對應一塊硬碟空間,並返回乙個檔案物件賦值給乙個變數f
data=f.read()呼叫檔案物件下的讀/寫方法,會被作業系統轉換為讀/寫硬碟的操作
f.close()開啟乙個檔案包含兩部分資源:應用程式的變數f和作業系統開啟的檔案。在操作完畢乙個檔案時,必須把與該檔案的這兩部分資源全部**,**方法為:向作業系統發起關閉檔案的請求,**系統資源
f.close() #**作業系統開啟的檔案資源其中del f一定要發生在f.close()之後,否則就會導致作業系統開啟的檔案無法關閉,白白占用資源, 而python自動的垃圾**機制決定了我們無需考慮del f,這就要求我們,在操作完畢檔案後,一定要記住f.close(),雖然我們如此強調,但是大多數讀者還是會不由自主地忘記f.close(),考慮到這一點,python提供了with關鍵字來幫我們管理上下文.del f #**應用程式級的變數
#1、在執行完子**塊後,with 會自動執行f.close()
with open('a.txt','w') as f:
pass
#2、可用with同時開啟多個檔案,用逗號分隔開即可
with open('a.txt','r') as read_f,open('b.txt','w') as write_f:
data = read_f.read()
write_f.write(data)
f = open(...)是由作業系統開啟檔案,如果開啟的是文字檔案,會涉及到字元編碼問題。
如果沒有為open指定編碼,那麼開啟文字檔案的預設編碼很明顯是作業系統說了算了,作業系統會用自己的預設編碼去開啟檔案,在windows下是gbk,在linux下是utf-8。
這就用到了上節課講的字元編碼的知識:若要保證不亂碼,檔案以什麼方式存的,就要以什麼方式開啟。
f = open('a.txt','r',encoding='utf-8')
day08 集合 檔案處理初解
今日內容 1 集合型別 去重關係運算 型別總結 2 檔案處理 基本使用 with語法 上下文管理 檔案開啟的模式 t 字元編碼 一 集合set 作用 去重 雞肋 1 無法保證順序 2 只能針對不可變元素去重 定義 在 內用逗號分隔開多個元素 1.集合內元素必須是不可變型別 2.集合內元素不能重複 3...
08 集合對映 set
實際上,set這種集合對映我們在前面已經學習關聯關係對映時已經用過了,實體類 實體類都在在資料庫中有對應的表 中有一對多或者多對多的關係,並且我們可以通過某一側訪問到另一側,就是通過在類中設定 set集合並配置set對映來實現的。在hibernate配置中有兩種資料型別,一種是值型別,另一種是實體型...
day 08 檔案管理
2 access 1 建議鎖 檔案鎖的由來 當兩個程序在同一時刻向同乙個檔案中寫入資料時,可能造成資料的交錯和不一致問題 當乙個程序在向檔案中寫入資料的同時,另外乙個程序讀取檔案中資料時可能造成資料的不一致性問題 當兩個程序同時讀取同乙個檔案資料時,可以同時進行 沒有讀寫操作讀取操作寫入操作 讀取o...