A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小江哥 黑马粉丝团   /  2018-8-24 01:40  /  1059 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

setlisttuple       
列表推导式               
匿名函数               
递归函数(了解)               
给程序传参       
setlisttuple
set是集合类型
setlisttuple之间可以相互转换
使⽤set,可以快速的完成对list中的元素去重复的功能
列表推导式
所谓的列表推导式,就是指的轻量级循环创建列表
1.基本的⽅式
2.在循环的过程中使⽤if
3.2for循环
4.3for循环
练习
请写出⼀段 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.作为内置函数的参数
想⼀想,下⾯的数据如何指定按agename排序?
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)
运⾏结果:

1 个回复

倒序浏览
6666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马