set、list、tuple set是集合类型 set、list、tuple之间可以相互转换 使⽤set,可以快速的完成对list中的元素去重复的功能 列表推导式 所谓的列表推导式,就是指的轻量级循环创建列表 1. 基本的⽅式 2. 在循环的过程中使⽤if 3.2个for循环 4.3个for循环 练习 请写出⼀段 Python 代码实现分组⼀个 list ⾥⾯的元素,⽐如 [1,2,3,...100]变成 [[1,2,3],[4,5,6] ] 参考答案: a = [x for x in range(1,101)] b = [a[x:x+3] for x in range(0,len(a),3)] 匿名函数 ⽤lambda关键词能创建⼩型匿名函数。这种函数得名于省略了⽤def声明函数的标准步骤。 lambda函数的语法只包含⼀个语句,如下: lambda [arg1 [,arg2, argn]]:expression 如下实例: sum = lambda arg1, arg2: arg1 + arg2 # 调⽤sum函数 print("Value of total : " % sum( 10, 20 )) print("Value of total : "% sum( 20, 20 )) 以上实例输出结果: Value of total : 30 Value of total : 40 Lambda函数能接收任何数量的参数但只能返回⼀个表达式的值匿名函数不能直接调⽤print,因为lambda需要⼀个表达式 应⽤场合 函数作为参数传递 1. ⾃⼰定义函数 >>> def fun(a, b, opt): ... print("a = " % a) ... print("b = " % b) ... print("result =" % opt(a, b)) ... >>> fun(1, 2, lambda x,y:x+y) a = 1 b = 2 result = 3 2.作为内置函数的参数 想⼀想,下⾯的数据如何指定按age或name排序? stus = [ {"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}, {"name": "wangwu", "age": 17} 按name排序: >>> stus.sort(key = lambda x: x['name']) >>> stus [{'age': 19, 'name': 'lisi'}, {'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}] 按age排序: >>> stus.sort(key = lambda x: x['age']) >>> stus [{'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}, {'age': 19, 'name': 'lisi'}] 03. 递归函数 通过前⾯的学习知道⼀个函数可以调⽤其他函数。 如果 ⼀个函数在内部调⽤其本身,这个函数就是 递归函数。递归函数的作⽤ 举个例⼦,我们来计算阶乘 n! = 1 2 3 ... n 解决办法1: 看阶乘的规律 1! = 1 2! = 2 × 1 = 2 × 1! 3! = 3 × 2 × 1 = 3 × 2! 4! = 4 × 3 × 2 × 1 = 4 × 3! ... n! = n × (n-1)! # 如果定义step_num函数实现了阶乘,相当于step_num(n) = n * step_num(n-1) def step_num(num): if num > 1: return num * step_num(num - 1) else: return 1 递归函数⼀般都需要⼀个条件判断来打破死循环,否则会导致到达最⼤嵌套次数,程序报错 给程序传参数 import sys print(sys.argv) 运⾏结果:
|