匿名函数
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 n
n += 1
print(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(" "*n, file,":") # 打印文件名
func(f_d, n + 1)#如果是文件夹继续循环调用
else: # 不是文件夹. 普通文件
print(" "*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 = 0
right = len(lst) - 1
while lst[left] <= lst[right]:
mid = (left+right) // 2
if n > lst[mid]:
left = mid + 1
if n < lst[mid]:
right = mid - 1
if n == lst[mid]:
print('yes', mid)
break
else:
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 lst
print(fun(lst))