递归函数
如果一个函数在内部调用自己本身,这个函数就是递归函数。
在使用递归时,需要注意以下几点:
(1)自己调用自己
(2)必须有一个明确的递归结束条件,称为递归出口。
练习1:使用递归函数向控制台打印3,2,1
def print_num(num):
print(num)
if num == 1
return
print_num(num-1)
print('--->')
print_num(3)
'''
3
2
1
--->>
--->>
'''
练习2:计算1到10的阶乘:例如1*2*3*4*5...*10
def func(n):
if n == 1
return
return n*func(n-1)
num = func(10)
print(num)
3628800
练习3:查找数字:通过程序查找输入的number值
def search(number,start,end):
if number == start:
return start
else:
middle = (start+end)//2
if number <= number
return search(number,middle,end)
else:
return search(number,start,middle)
ret = search(2,1,10)
print(ret)
内置函数
1 abs()函数 求数字的绝对值
ret = abs(-21)
print(ret) 21
2 max()函数 求最大值
max(iterable, key, default) 求迭代器的最大值,
其中iterable 为迭代器,max会for i in … 遍历一遍这个迭代器,
然后将迭代器的每一个返回值当做参数传给key=func 中的func(一般用lambda表达式定义) ,然后将func的执行结果传给key,然后以key为标准进行大小的判断。
1,简单使用max()函数
ret = max(1,2,3)
print(ret) 3
2 ,使用key关键字
key = 函数名称 ,--->指定求最大值的规则
ret = max(1,2,-3,key=abs)
print(ret) # -3
3,根据name和price返回自大的信息
lst =
[{'name': 'egon', 'price': 100},
{'name': 'rdw', 'price': 666},
{'name': 'zat', 'price': 1}]
根据name值进行比较,返回商品信息
根据priced的值进行比较 返回商品信息
def max_name(dic):
return dic['name']
den max_price(dic):
return dic['price']
ret = max(lst,key = max_name)
ret2 = max(lst,key =max_price )
print(ret)
print(ret2)
'''
{'price': 1, 'name': 'zat'}
{'price': 666, 'name': 'rdw'}
'''
3 map() 函数
有两个参数,第一个参数是一个函数,第二个参数是可迭代内容
函数会依次作用在可迭代内容的每一个元素上进行计算,然后返回一个新的可迭代内容
练习 1 lst中的每一个元素的平方值
lst = [1,3,5]
def square(num):
num2 = num *num
return num2
ret = map(square,lst)
print(ret)
for i in ret:
print(i)
ret1 = list(map(square,lst))
print(ret1)
1
9
25
[1, 9, 25]
4filter()函数
filter()用于过滤序列,过滤掉不符合条件的元素,返回符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断
然后返回True 或False ,最后将返回True的元素放到新列表中。
练习1 过滤出列表中的所有奇数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def odd(num):
if num % 2 == 1:
return num
ret = filter(odd,lst)
print(list(ret))
for i in ret:
print(i)
'''
[1, 3, 5, 7, 9]
'''