匿名函數 lambda 匿名函數 格式 lambda 參數:返回值 函數名統一叫lambda,最多只能寫一行普通的正常的函數 def func(n):return n * n lambda匿名函數寫法 a = lambda n : n**2 print(a(3)) 當有多個返回值時suiyi = lambda x, y : (1, 2) # 筆試題 返回值有多個要用(),返回值時已元組方式返回的 print(suiyi) #==》<function <lambda> at 0x03713420> print(suiyi(250,38)) #==》(1, 2) 遞歸 在函數中調用自己,python最大遞歸層數是1000,不到1000就會提前報錯,sys.setrecursionlimit(10000000),可以更改遞歸最大層數import sys sys.setrecursionlimit(10000000) n = 0 def story():global nn += 1print(n)story() story() 遍歷 D:/sylar文件夾, 打印出所有的文件和普通文件的文件名import os def func(filepath, n): # d:/sylar/# 1,打開這個文件夾files = os.listdir(filepath)# 2. 拿到每一個文件名for file in files: # 文件名# 3. 獲取到路徑f_d = os.path.join(filepath, file) # d:/sylar/文件名/# 4. 判斷是否是文件夾if os.path.isdir(f_d):# 5. 如果是文件夾. 繼續再來一遍print("\t"*n, file,":") # 打印文件名func(f_d, n + 1)#如果是文件夾繼續循環調用else: # 不是文件夾. 普通文件print("\t"*n, file)func("d:/sylar",0)二分法查找 二分法思想:二分法的序列必須是有序的,從小到大排序,先和中間的比較大小如果比中間的值大,則所取值在右側,左邊值右移,如此循環比較lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]def fun(n):left = 0right = len(lst) - 1while lst[left] <= lst[right]:mid = (left+right) // 2if n > lst[mid]:left = mid + 1if n < lst[mid]:right = mid - 1if n == lst[mid]:print('yes', mid)breakelse:print('no')fun(101)
冒泡排序
lst = [22, 13, 44, 55, 66, 77, 88, 99, 101 , 8 , 345 , 456 , 57 , 678 , 789]def fun(lst):for i in range(len(lst)):for i in range(len(lst)-1):if lst[i] > lst[i+1]:lst[i], lst[i + 1] = lst[i+1], lst[i]return lstprint(fun(lst))
?
?