python学习记录--递归函数,二分法,三元表达式,列表、字典生成式,匿名函数
-
递归函数
-
算法之二分法
-
三元表达式
-
列表生成式 字典生成式
-
匿名函数
#count=1
# def index():
# print('from index')
# global count #在函数内部修改全局名称空间
# count += 1
# print(count)
# index()
修改递归深度
import sys
# print(sys.getrecursionlimit())#查询递归深度
# sys.setrecursionlimit(2000)#更改递归深度
递归深度默认是1000次,递归深度是可以查看和更改的
2间接调用
递归函数的应用
应用1
5个人的年纪,每一个比上一个人小两岁,最后一个为18,用递归函数推测年纪
# age(5) = age(4) + 2 # 26
# age(4) = age(3) + 2 # 24
# age(3) = age(2) + 2 # 22
# age(2) = age(1) + 2 # 20
# age(1) = 18
递归函数一定要有结束条件
底层逻辑
应用2
l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, ]]]]]]]]]]
将列表中的数字分别打印出来
方法1
方法2
三元表达式
例子1
# def my_max(a, b):
# if a > b:
# return a
# else:
# return b
#
#
# print(my_max(1, 2))
针对上述只有两种情况的判断,我们可以使用三元表达式
例子2
# a = 1111
# b = 2111
# username = 'ly'
# res = a if a > b else ('world' if False else ('帅哥' if username == 'ly' else 'dsb'))
# print(res)
执行逻辑
例子3
##### 让用户输入判断
cmd = input('username:').strip()
# if cmd == 'ly':
# print('帅哥')
# else:
# print('dsb')
res = '帅哥' if cmd == 'ly' else 'dsb'
print(res)
# for i in l:
# if i == 66:
# print('找到了')
分法2
列表生成式
在列表l的每一个元素后面加上abc
l = ['ly', 'jason', 'tom']
方法1(传统方法)
方法2(列表生成式)![]()
不在’jason‘后面加abc
方法1(传统方法)
方法2(列表生成式)
字典生成式
将 l1 , l2 生成一个字典
l1 = ['name', 'age', 'hobby']
l2 = ['ly', 18, 'music']
知识储备
# for i,j in enumerate(l1, start=2):
# print(i,j)
方法1(传统方法)
方法2(字典生成式)
推理可得
# 集合生成式
# res = {l1[i] for i, j in enumerate(l1)}
# # print(res)
# 生成器
# res = (l1[i] for i, j in enumerate(l1))
# print(res)
匿名函数
即没有名字的函数
语法格式:
lamnda 参数:返回值
# res = lambda x:x**2
# print(res(2))
匿名函数的使用
匿名技术不会单独使用,需要结合一些内置函数使用
技术储备
map函数的使用