Python:集合、函數、三元運算符
集合:
#一種數據類型,有去重的功能,無序的(不能根據下標取值)
兩種定義集合方法:
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:集合、函數、三元運算符