一、整理筆記
可變參數 -在參數的前面添加*,就稱為可變參數 -可變參數不限制傳入的參數的個數 -它實際上是把所有傳入的參數封裝為 一個元組 -*添加在形參的前面,作用是把傳入的參數打包成一個元組 -*添加在實參的前面,作用是把列表或元組進行拆包成一個一個獨立的數據 #可變參數函數 def g(*nums): s=0 for i in nums: s+=i return s print('s=%s'%g(1,2,3,4,5,7,8)) #print('s=%s'%g(l[0],l[1],l[2])) print('s=%s'%g(*l)) 關鍵字參數 -在參數前t添加**,就稱為關鍵字參數 -關鍵字參數應當以key=value的形式進行傳參 -關鍵字參數不限制傳入的參數的個數,可以是多個,也可以是0個 -實際上是把所有傳入的參數封裝為 一個字典 def student(name,age,**info): print (name,age,info) student('tom',22,gender='男',city='西安') 命名關鍵字參數 -命名關鍵字參數應當以key=value的形式進行傳參 -命名關鍵字參數與位置參數類似,實參和形參的數量必須匹配 -命名關鍵字參數還可以給默認值 def student2(name,age,*,gender,city): print (name,age,gender,city) student2('lili',22,gender='女',city='西安') #可以接收任意數量,類型的參數 #*args,**kw: 通用參數列表 def function(*args,**kw): pass '''遞歸函數''' #遞歸函數中一定要有對函數自己的調用 #遞歸函數中一定要有邊界條件 def fact(n): if n == 1: return 1 return fact(n-1)*n print(fact(5)) '''切片''' names = ['bailina','xiaobai','bai','lina'] #names[a:b:c]表示截取從下標為a 到下標b結束的所有元素,但包含a,不包含b #c是步長 #列表切片后還是列表 print (names[0:3]) print (names[-3:-1]) #如果第一個索引是0,可以省略 print (names[:3]) #如果一直截取到末尾,可以省略第二個索引 print (names[1:]) #復制列表 l = names[:] print (l) #切片時還可以指定步長,步長值默認是1 print(names[0::3]) #元組也可以切片,結果還是元組 tuple =(1,2,3,4,5,6,7) print (tuple[0:3]) #字符串也可以切片,結果還是字符串 s = "abcdef" print (s[1:4]) '''迭代''' names = ['bailina','xiaobai','bai'] #循環(huán),遍歷,迭代iteration #names :可迭代對象:列表,元組,字典 ,字符串 for name in names: print(name) print('-------------------------------------') #遍歷key name_scores = {'bailina':99,'xiaobai':99,'libai':100} for key in name_scores: print(key,name_scores[key]) #遍歷value for value in name_scores.values(): print(value) #同時遍歷key和value for key ,value in name_scores.items(): print(key,value) #遍歷字符串 str ='abcdef' i = 0 #控制循環(huán)變量 for char in str: print(i,char) i = i +1 #簡化方式提供循環(huán)遍歷 for i ,char in enumerate(str): print(i,char) #生成一個列表 # nums = [0,1,2,3,4,5,6,7,8,9] nums = list(range(0,10)) print(nums) #[1*1,2*2,3*3....,9*9] nums = [] for x in range(1,10): nums.append(x*x) print(nums) #列表生成式 m =[x*x for x in range(1,10)] print(m) #[1,1/2,1/3] m =[1/n for n in range(1,10)] print(m) #列表生成式中添加條件判斷 o =[x*x for x in range(1,10) if x%2!=0] print(o) #列表生成式中使用多重循環(huán) p = [x+y for x in 'ABC' for y in 'XYZ'] print(p) #用列表生成式生成元組 a = tuple([x*x for x in range(1,10)]) print(a)
|