# 直接或者间接的调用自己 # 直接或者简介调用自己 import sys # print(sys.getrecursionlimit()) # sys.setrecursionlimit(2000) # print(sys.getrecursionlimit()) # count = 1 # def index(): # print('from index') # global count # count += 1 # print(count) # index() # # # index() ''' 递归深度默认是1000次,递归深度是可以查看和更改的 ''' # # def index(): # print('from index') # func() # def func(): # print('from func') # index() # func() # 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 ''' 递归一定一定要有结束条件!!! ''' # def age(n): # # return age(n - 1) + 2 # age(4)+2 # # return age(n - 1) + 2 # age(3)+2 # # return age(n - 1) + 2 # age(2)+2 # if n==1: # return 18 # return age(n - 1) + 2 # age(1)+2 # # print(age(5)) l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, ]]]]]]]]]] # 第一种方式: # for i in l: # if type(i) is int: # print(i) # else: # # 说明当前循环的数据类型是列表 # for j in i: # # 判断j是什么类型 # if type(j) is int: # print(j) # else: # # 说明当前循环的数据类型是列表 # for k in j: # if type(k) is int: # print(k) # else: # # 说明当前循环的数据类型是列表 # for x in k: # if type(x) is int: # print(x) # # # 第二种方式: def get_num(l): for i in l: if type(i) is int: print(i) else: get_num(i) get_num(l)
# def my_max(a, b): # if a > b: # return a # else: # return b # # # print(my_max(1, 2)) # 针对上述只有两种情况的判断,我们可以使用三元表达式 # a = 1111 # b = 211 # res = a if a > b else b # print(res) #### 不推荐使用,但是,面试的时候使用 # a = 1111 # b = 2111 # username = 'ly' # res = a if a > b else ('world' if False else ('帅哥' if username == 'ly' else 'dsb')) # print(res) ##### 让用户输入判断 cmd = input('username:').strip() # if cmd == 'ly': # print('帅哥') # else: # print('dsb') res = '帅哥' if cmd == 'ly' else 'dsb' print(res)
# 什么是算法 就是解决问题的高效方法 # 二分法 # 常见的算法:冒泡算法, 二分法,选择排序 l = [1, 2, 3, 4, 5, 6, 11, 22, 34, 44, 55, 66, 67, 333, 444] # 第一种方式 # for i in l: # if i == 66: # print('找到了') # 1. 排序 # l.sort() def my_half(target_num, l): # target_num = 34 # l # 1. 从列表中去一个中间值 middle_index = len(l) // 2 # 7 # 2. 比较 if target_num > l[middle_index]: # 要找的元素在右边 l_right = l[middle_index + 1:] my_half(target_num, l_right) print(l_right) elif target_num < l[middle_index]: # 要找的元素一定在左边 l_left = l[:middle_index] my_half(target_num, l_left) print(l_left) else: print('找到了,哈哈哈哈')
l = ['ly', 'jason', 'tom'] new_list = [] # 第一种方式: # for i in l: # new_list.append(i +'_dsb') # # print(new_list) # 第二种方式: # res = [i + '_dsb' for i in l] # print(res) # 传统写法: # for i in l: # if i != 'jason': # new_list.append(i+'_dsb') # else: # new_list.append(i) # 列表生成式: # res = [i + '_dsb' for i in l if i != 'jason' ] res = [i + '_dsb' if i != 'jason' else i for i in l] print(res)
l = ['ly', 'jason', 'tom'] new_list = [] # 第一种方式: # for i in l: # new_list.append(i +'_dsb') # # print(new_list) # 第二种方式: # res = [i + '_dsb' for i in l] # print(res) # 传统写法: # for i in l: # if i != 'jason': # new_list.append(i+'_dsb') # else: # new_list.append(i) # 列表生成式: # res = [i + '_dsb' for i in l if i != 'jason' ] # res = [i + '_dsb' if i != 'jason' else i for i in l] # print(res) # 字典生成式 l1 = ['name', 'age', 'hobby'] l2 = ['ly', 18, 'music'] # 补充: # for i,j in enumerate(l1, start=2): # print(i,j) # 定义一个空字典 # new_dict = {} # for i in range(len(l1)): # new_dict[l1[i]] = l2[i] # # print(new_dict) # 字典生成式 # res = {l1[i]: l2[i] for i, j in enumerate(l1)} # print(res) # 集合生成式 # res = {l1[i] for i, j in enumerate(l1)} # # print(res) # 生成器 # res = (l1[i] for i, j in enumerate(l1)) # print(res)
# 没有名字的函数 ''' 语法格式: lambda 参数:返回值 ''' def index(x): return x ** 2 # print(index) # print((lambda x:x**2)(2)) # 目的:不是这样用的,不会单独使用匿名函数 # res = lambda x:x**2 # print(res(2)) # 结合一些内置函数使用 l = [1, 2, 3, 4, 5, 6] # map函数 # def add(i): # return i + 1 # zip... res=list(map(lambda x:x**3, l)) print(res)