函数与Lambda表达式
练习题
- 怎么给函数编写⽂档?
- 怎么给函数参数和返回值注解?
- 闭包中,怎么对数字、字符串、元组等不可变元素更新。
- 分别根据每一行的首元素和尾元素大小对二维列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表达式)
- 利用python解决汉诺塔问题?
有a、b、c三根柱子,在a柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在c柱子上,尝试用函数来模拟解决的过程。(提示:将问题简化为已经成功地将a柱上面的63个盘子移到了b柱)
# 1、
使用"doc"
# 2、
使用"""*args, **kwargs"""
# 3、
使用 nonlocal 关键字
# 4、
a = [[6, 5], [3, 7], [2, 8]]
b = sorted(a, key=lambda x: x[0])
print(b)
c = sorted(a, key=lambda x: x[1])
print(c)
[[2, 8], [3, 7], [6, 5]]
[[6, 5], [3, 7], [2, 8]]
# 5、
def Hanoi(a, b, c, num=1):
if not isinstance(num, int):
raise TypeError('in Hanoi')
if num < 1:
raise ValueError('in Hanoi')
if num == 1:
print('{0}->{1}'.format(a, c))
return
else:
Hanoi(a, c, b, num-1)
print('{0}->{1}'.format(a, c))
Hanoi(b, a, c, num-1)
Hanoi('a', 'b', 'c', 3)
a->c
a->b
c->b
a->c
b->a
b->c
a->c