1. 程式人生 > >Python:集合、函數、三元運算符

Python:集合、函數、三元運算符

filename pri other mod 接收參數 系統 != lee 多個參數

集合:

#一種數據類型,有去重的功能,無序的(不能根據下標取值)

兩種定義集合方法:

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:集合、函數、三元運算符