''' 引用:核心值变不变,是新的引用还是在老引用基础上变了,就看数据是可变还是不可变 递归函数:函数可以嵌套,如果嵌套的自己,就是递归函数(实现阶乘),必须有停止条件类同循环 匿名函数: 使用lambda代表匿名,就是简写形式 格式: lambda 参数 : 做什么 lambda 相当于 def 函数名 实际使用: 排序 (实现排序,讲义上的例子熟练) 格式: list.sort(key=lambda x: x['name']) 说明: 列表list.sort升序排列 , 排列规则按照key来, key= 函数找出键值['name']按照键值的顺序来排列 其实是内置函数.sort(key)来实现排序,只不过使用key= lambda匿名函数 列表推导式: 又是一种简写 a = [x for x in range(0,10)], a这个list的内容把循环写里 循环0-10中的数写到列表里 +if a = [x for x in range(0,10) if x % 2 == 0] 循环0-10中的数,and被2整除 2个for a = [(x,y) for x in range(0,10) for y in range(5,10)] 结果就是(x,y) 是个列表套元组 说白了把for,if等写进去,就是简化了append的过程 a = [ 得到的数 这些数的条件 ] 练习:(需要自己熟练打出来) 列表是有序的,可以实现切片 [开始位置 : 结束位置 : 步长] 练习 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....] a = [x for x in range(1,101)] 得到1-100 的列表 ret1 = [a[x:x+3] for x in range(0,len(a),3)] 有没有发现和list的切片位置不一样,为什么步长在range里,看下边 把a 切片 开始位置x 结束位置x+3 range的0到len(a)是下标索引 步长为3 就是3个下标为一部分 ret2 = [a[x:x+3:3] for x in range(0,len(a))] 这个应该是和list的基本型相同,看他俩的结果有什么不同为什么 ret1 = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20],...] ret2 = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16],...] 现在理解不深,避免结果问题,不使用 切片+ list推导式 试试range(0,20,2)呗 range(开始位置, 结束位置, 步长) ret3 = [a[x:x+3] for x in range(0,len(a))] ret3 = [[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10], [9, 10, 11],...] ret4 = [a[x:x+3:2] for x in range(0,len(a))] ret4 = [[0, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7], [6, 8], [7, 9], [8, 10], [9, 11], [10, 12], [11, 13], [12, 14],...] '''