递归函数:
什么是递归函数:就是直接或者间接的调用自己
"""
递归:
1. 递推
逐层寻找答案
2. 回溯
根据最终的答案推导出最原始的答案
3. 递归函数必须有结束条件!!!
"""
递归练习题:
lst = [1, [2, [3, [4, [5, [6, [7, ]]]]]]]
第一种方法:
for i in lst:
# # 判断此时的i值是整数还是列表,如果是整数直接打印,如果是列表,直接for循环
if type(i) is int:
print(i)
else:
# 如果是列表,直接for循环
for j in i:
if type(j) is int:
print(j)
else:
# 如果是列表,直接for循环
for m in j:
if type(m) is int:
print(m)
第二种方法:
def get_lst(l):
for i in l:
if type(i) is int: #如果为int类型则输出
print(i)
else: #如果是其他类型则再次运行这个函数
get_lst(i)
get_lst(lst)
二分法:
二分法原则:只有列表中的数据有序才能使用二分法
eg:l = [1, 22, 44 ,10, 3, 45, 66, 88,101, 20, 30 ,40]
target_num = 20
def my_half(target_num, l):
if len(l) == 0: #列表l的长度为0时
print('不好依稀,没找到')
return
middle_index = len(l) // 2 # 6 #整数除法,取商
if target_num > l[middle_index]: #如果要找的数字大于中间的值
l_right=l[middle_index+1:] # l[7] #取左边的值
print(l_right)
my_half(target_num, l_right)
elif target_num < l[middle_index]: #如果要找的数字小于中间的值
l_left=l[:middle_index] #取右边的值
print(l_left)
my_half(target_num, l_left)
else:
print('找到了')
my_half(target_num, l)
三元表达式:
语法结构:
def my_max(a, b):
if a > b:
return a
else:
return b
条件成立后的结果 if 条件 else 条件不成立的结果
def my_max(a, b):
return a if a > b else b
小练习:
a = 1
b = 10
c = 10
d = 20
res=a if a > b else (c if c > d else ( 'bbb' if d > c else 'aaa'))
print(res)
列表生成式:
name_list = ['kevin', 'jack', 'ly', 'tony']
需求:除了jack不加_NB,其他都加
1.传统做法:
new_list = []
for name in name_list:
if name == 'jack':
continue
else:
res = '%s_NB' % name
new_list.append(res)
print(new_list)
2.特殊做法:
res = ['%s_NB' % name for name in name_list if name != 'jack']
字典生成式:
"""
enumerate:使用for循环的时候,可以解压赋值出来两个值,一个是索引,一个是元素
start:控制的是起始位置,默认是从0开始
"""
for i, j in enumerate(l1, start=2):
print(i ,j)
#2. 字典生成式
res = {i:j for i, j in enumerate(l1)}
print(res)
第一种 第二种字典生成式
匿名函数:
"""
语法格式:
lambda 形参:返回值
lambda x:x**2
匿名函数一般步单独使用,会配合其他函数使用
map()
"""
map(函数名, 要遍历的数据) # 内部本质就是for循环,再记住两个参数的位置和作用
l = [1,2,3,4,5,6,7,8,9]
# res=list(map(index, l)) # <map object at 0x0000017D935721F0>
#map
res=list(map(lambda x:x**2, l)) # <map object at 0x0000017D935721F0>
print(res) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
zip,拉链
以最短的长度为标准
max min
filter过滤
标签:系列,name,递归,res,list,else,num,print,表达式 From: https://www.cnblogs.com/whxx/p/17189295.html