標籤:python 實參 休息 join sleep 逗號 去除 結果 函數返回
集合:
#一種資料類型,有去重的功能,無序的(不能根據下標取值)
兩種定義集合方法:
1:先定義一個列表,然後通過強制類型轉換成集合
a=[1,2,3,4,4,5] #set(a) 強制類型把列表a轉換為集合,會把重複的值4去重
2:S={1,2,3,4} #與字典要區別開
集合的操作:
list1 = {1, 2, 3, 4, 5, 6, 9}
list2 = {2, 3, 4, 6, 1}
list3 = {1, 2, 3}
print(list1.intersection(list2)) # 取交集,也就是取list1和list2中都有的
print(list1 & list2)# 取交集
print(list1.union(list2)) # 取並集,也就是把list1和list2合并了,然後去除重複的
print(list1 | list2)# 取並集
print(list1.difference(list2)) #取差集 在list中存在,在list2中沒有的
print(list1 - list2) #取差集
print(list3.issubset(list1))#判斷list3是不是list1的子集
print(list1.issuperset(list3))#判斷list1是不是list3的父集
print(list1.isdisjoint(list3))#判斷list1和list3是否有交集
print(list1.symmetric_difference(list2))#對稱差集,輸出兩個列表中互相都沒有的值,也就是把兩個集合中相同的去掉
print(list1 ^ list2) #取對稱差集
list1.add(888)#添加元素
list1.update([777,666,666])
list1.remove(777)#刪除元素,如果元素不存在會報錯
list1.pop()#刪除一個隨機的元素,並返回刪除的元素
list1.discard(‘dddd‘)#如果刪除的元素存在,刪除,不存在不做處理
三元運算子:
文法1:a=值1 if 條件 else 值2 #如果if條件成立,a=值1,否則,a=值2
文法2:nums = [1,2,3,4,5,6,7,8,9,10]
odd_num = [num for num in nums if num%2!=0 ]#迴圈nums,如果nums裡面的值,不能被2整除的話,就寫到odd_num這個list中,也就是算奇數,等於下面這麼寫
odd_num = []
for num in nums:
if num % 2 !=0:
odd_num.append(num)
函數(又叫方法):
將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。
定義函數:
def my_open(): #定義一個my_open的函數,要帶冒號
調用函數:
My_open() #函數名加括弧即調用此函數,函數不調用就不會執行
函數必填參數:
def read_users(file_name,age): #定義函數時,括弧裡是形參(即變數);多個參數用逗號隔開,這種又叫必填參數或位置參數
read_users(‘a.txt’,20) #調用函數時,括弧裡是實參,是實際的參數;多個參數用逗號隔開
函數預設值參數:
def read_users(name,sex=’nan’): #sex是預設值參數
read_users(‘hn’) #調用時如果不填sex對應的實參,就預設是‘nan’
read_users(‘hn’,’nv’) #調用時如果填sex對應的實參,就取實參的值
函數可變參數:
def post(*args): #也叫參數組(習慣性寫args,也可以寫其他變數),數量不固定,不是必填的,接收的是一個元組,它把調用函數時傳進去的參數放到一個元組裡
函數關鍵字參數:
也不是必填參數,可以為空白
def kw(**kwargs) #兩個星號,接收的是一個字典
kw(name=’hn’,age=20) #調用時實參要寫關鍵字,括弧裡可以直接填字典變數,但要加上**,比如(dic={‘ name’=’hn’,’age’=20}) kw(**dic)
參數的順序:
按照必填參數、預設值參數、可變參數、關鍵字參數的順序接收參數,否則會報錯,例:def other(name,country=’china’,*args,**kwargs)
調用函數時使用關鍵字參數:
如果定義函數時,必填參數太多,在調用函數時,可以用key=value形式傳實參,這種實參可以無序。例:定義函數:def write(filename,model,user,os): 調用:write(‘a.txt’,user=’hn’,os=’windows’,model=’hhh’) #調用函數傳實參時,必填參數必須在關鍵字參數前面
函數傳回值:
用return a #函數碰到return立即結束函數;調用完函數之後會返回一個結果
沒有傳回值的函數,預設返回None
返回多個值:
return a,b,c #用逗號隔開,返回的多個值會放到元組裡
局部變數和全域變數:
局部變數:在函數裡面定義的變數叫局部變數,只能在函數裡面用
全域變數:在函數外定義的變數,是全域變數,在函數內也能使用
在函數裡改全域變數:
(int、string類型):用global聲明
用global聲明一下,即global a a=100這樣全域變數a的值就變了,如果不用global聲明,a的值只是在函數裡變了,出了函數a的值還是函數體之前的值
List dic 類型:就不用global聲明,在函數裡改變值,出了函數值也變化了。如果用global聲明,會報錯。
補充:
1:變數給變數賦值,賦的是記憶體位址,舉例:def a(): a=b 那麼b()即調用了這個a函數
2:import os
os.system #用來執行作業系統命令
3:import time
time.sleep(60) #休息60秒再運行
4:linux重新導向:把一個檔案裡面的內容,複製到另一個檔案裡
Python:集合、函數、三元運算子