1. 程式人生 > 實用技巧 >集合+檔案操作(1)r部分

集合+檔案操作(1)r部分

昨日補充:

####d.update():更新,無就新增,有就覆蓋
d={"name":"egon","age":18,"gender":"xxxx"}
res = d.update({"gender":"male"})
print(d)>>>>>{'name': 'egon', 'age': 18, 'gender': 'male'}
print(res)>>>>None

####d.setdefault():有就不變,無才新增
res = d.setdefault("gender","male")
print(res)>>>>>>>xxxx``
print(d)>>>>>{'name': 'egon', 'age': 18, 'gender': 'xxxx'}

取交集(麻煩的辦法)

pythons = ["tom","jack","alex","egon","lxx"]
linuxs = ["lili","hanmeimei","張三","egon","lxx","jay"]

l=[]
for name in pythons:
    if name in linuxs:
        l.append(name)

print(l)>>>>>['egon', 'lxx']

集合型別set基本使用

1、用途:

去重

(1) 無法保證順序

msg = "hello"
res=set(msg)>>>>{'0','l','e','h'} 無順序
print(''.join(res))>>>>oleh

names = ['egon','lxx','lili',"egon","egon"]
print(list(set(names)))>>>>>>['egon', 'lxx', 'lili'] 去重

(2)只能針對不可變元素的去重

students_info = [
    {"name":"egon","age":18,"gender":"male"},
    {"name":"tom","age":19,"gender":"male"},
    {"name":"jack","age":38,"gender":"female"},
    {"name":"egon","age":18,"gender":"male"},
    {"name":"egon","age":18,"gender":"male"},
]

new_l = []
for info in students_info:
    if info not in new_l:
        new_l.append(info)

print(new_l)>>>>>[{'name': 'egon', 'age': 18, 'gender': 'male'}, 
                  {'name': 'tom', 'age': 19, 'gender': 'male'}, 
                  {'name': 'jack', 'age': 38, 'gender': 'female'}]

關係運算

2、定義方式: 在{}內用逗號分隔開多個元素,集合內元素的特點有三個

        (1)集合內元素必須是不可變型別
        (2)集合內元素不能重複
        (3)集合內元素無序
s = {11,3.1,"xxx",(1,2,3),}
s = {11,11,11,11,11,22,33}  # s = set(...)
print(s)
print(type(s))

資料型別轉換

res = set("hello")>>>>>字串轉集合
print(res)

s = set()
print(s,type(s))

3、常用操作+內建的方法

pythons = {"tom","jack","alex","egon","lxx"}
linuxs = {"lili","hanmeimei","張三","egon","lxx","jay"}

(1)交集:取兩個集合的共同部分->既報名pythons又報名linuxs的學生

print(pythons & linuxs)
print(pythons.intersection(linuxs))
pythons = pythons & linuxs
pythons.intersection_update(linuxs)

(2)並集:兩個集合併到一起->所有學生的姓名

print(pythons | linuxs)
print(pythons.union(linuxs))

(3)差集: 一個集合減掉與另外一個集合共同的部分

只學了python的學生姓名
print(pythons - linuxs)
print(pythons.difference(linuxs))

只學了linux的學生姓名
print(linuxs - pythons)

(4) 交叉補集/對稱差集:兩個集合互相減,然後再併到一起-》取沒有同時學兩門課程的學生

res = (pythons - linuxs) | (linuxs - pythons)
res = pythons ^ linuxs
print(res)

print(pythons.symmetric_difference(linuxs))

(5)父子集合:當一個集合完全包含了另外一個集合,該集合才能稱爹

s1 = {1,2,3}
s2 = {3,4,5}
print(s1 >= s2)
print(s2 <= s1)

s1 = {1,2,3}
s2 = {1,2}
print(s1 >= s2)
print(s1.issuperset(s2))

print(s2 <= s1)
print(s2.issubset(s1))

需要掌握的

s1 = {1,2,3}
1、s1.update()
s1.update({3,4,5})
print(s1)

2、s1.add()
s1.add(4)
print(s1)

3、刪除

s1 = {11,22,33,44,55,"xx","yy","zz","aa"}
s1.remove(3)
print(s1)

s1.remove(333333333)
s1.discard(333333333)
print(s1)

res=s1.pop()
print(s1)
print(res)

s1.clear()
print(s1)
s1 = {11,22,33,44,55,"xx","yy","zz","aa"}
s1.copy()

4、s1.isdisjoint()判斷是否是無交集

s1 = {1,2,3}
s2 = {3,4,5,6}
print(s1.isdisjoint(s2))

==該型別總結

存多個值

無序

可變

s1 = {1,2,3}
print(id(s1))
s1.add(4)
print(id(s1))   不變

==檔案處理(1)

致命三連擊!!!

1、什麼是檔案
    檔案是作業系統提供給使用者或者應用程式操作硬碟的一種機制

2、為何要用檔案
    讀寫檔案----->存取硬碟

    應用程式:      open()
    作業系統:      開啟檔案
    計算機硬體:    硬碟空間

3、如何用檔案
    開啟檔案
    讀/寫
    關閉檔案

f = open
f = open(r"a\a.txt",mode="rt",)
f的值-》檔案控制代碼,檔案物件

res = f.read()
print(res,type(res))

f.close()  # 回收作業系統的資源
print(f)
f.read()

with 上下文管理,子程式碼執行完畢可自動回收作業系統資源

with open(r"a\a.txt",mode="rt",) as f,
open(r"a\b.txt",mode="rt",) as f1:
res = f.read()

with open(r"a.txt",mode="rt",) as f:
for line in f:
# print(line)
res=line.strip('\n').split('