视觉学习 Task06

Task 06

——函数与Lambda表达式

练习题:

  1. 怎么给函数编写文档:点击函数名后鼠标停留大概两秒会出现小黄色灯泡,下拉选择 'insert dicumentation string stub’选项, Pycharm会自动生成说明文档,包括自己的说明、传参的说明以及返回值的说明。
  2. 怎么给函数参数和返回值注解:注解参数时,在定义函数的时候,在参数列表内部的参数后面加上冒号,再在其后加上要传输的类型,如:代码1,; 注解返回值时,在列表的后面,冒号的前面加一个->后面接返回值的类型,如:代码2.
def accumlate(x:int, y:int):
    return x*y
def accumlate(x:int, y:int) -> int:
    return x*y
  1. 闭包中,怎么对数字、字符串、元组等不可变元素更新:用nonlocal关键字声明新的该元素进行赋值更新。
  2. 分别根据每一行的首元素和尾元素大小对二维列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表达式)
a = [[6, 5], [3, 7], [2, 8]]

def File(file,lst):
    i=0
    while i<len(lst):
#把列表每一个子列表的下表整理出来    
        lst_1=list(range(0,len(lst[i])))
        j=i+1
#通过函数体外的lambda语句来确定按子列表的什么部分进行排序        
        temp=lst[i][file(lst_1)]
#运用冒泡法排序        
        while j<len(lst):
            if temp>lst[j][file(lst_1)]:
                temp=lst[j][file(lst_1)]
                t = lst[i]
                lst[i] = lst[j]
                lst[j] = t
            j += 1
        i += 1
    print(lst)
#用max选子列表的最后一位元素进行排序    
File(lambda x: max(x),a)
#用min选子列表的第一位元素进行排序
File(lambda x: min(x),a)
    
  1. 有a、b、c三根柱子,在a柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在c柱子上,尝试用函数来模拟解决的过程:
    用递归的思想,将许多盘子的移动简化为把num-1个盘子移动到中间柱,再把地下的盘子和num-1个盘子分别移动到目的地,运用函数的递归可以使这种循环问题得到很方便的解决方法。
#定义为要把多少个盘子(num)从哪根柱子(start)上通过哪根柱子(through)移动到哪根柱子
#(to)上
def file(num,start,through,to):
#如果num只有1,那么直接从start柱子移动到to柱子就好啦    
    if num==1:
        print('{0}->{1}'.format(start,to))
#如果num大于1,就先要把num-1个盘子通过to柱子移动到through柱子上,在吧最底下的盘子
#从start柱子移动到to柱子上,在将那num-1个盘子从through柱子通过start柱子移动到to
#柱子上    
    if num>1:
        file(num-1,start,to,through)
        print('{0}->{1}'.format(start,to))
        file(num-1,through,start,to)
        
file(64,'a','b','c')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值