• 每日习题


    每日一题

    1.下面这段代码的输出结果是什么,并给出你的解释
    def index():
        return [lambda x : i * x for i in range(4)]
    print([m(2) for m in index()]) 
    
    fun = [lambda x: x*i for i in range(4)]
    for item in fun:
        print(item(1))
    上述式子的输出结果:
    预计结果为:0, 2, 4, 6
    实际输出为:3, 3, 3, 3
    最终输出为:6 ,6 ,6 ,6
    列表解析式运行时,列表解析式命名空间中的 i 经过循环依次变化为 0-->1-->2-->3 最后固定为 3 ,
    所以当 lambda x: x*i 内层函数运行时,去外层函数取 i 每次都只能取到 3
    解决办法:变闭包作用域为局部作用域。
    给内层函数 lambda x: x*i 增加参数,命名空间中有了用来存储每次的 i ,
    即改成 [lambda x, i=i: x*i for i in range(4)] 这样每一次,内部循环生成一个lambda 函数时,
    
    
    2.有一个列表[3,4,1,2,5,6,6,5,4,3,3]请写出一个函数,找出该列表中没有重复的数的总和
    li= [3,4,1,2,5,6,6,5,4,3,3]
    
    def func(li):
        xx = 0
        sss = list(set(li))
        print(sss)
        for i in range(len(sss)):
            xx += int(sss[i])
        return xx
    
    t = func(li)
    print(t)
    
    3.什么是函数的递归调用?书写递归函数需要注意什么?你能否利用递归函数打印出下面列表中每一个元素(只能打印数字),l = [1,[2,[3,[4,[5,[6,[7,[8,[9]]]]]]]]]
    
    要有结束条件  
    l = [1, [2, [3, [4, [5, [6, [7, [8, ]]]]]]]]
    
    def func1(listl):
        for item in listl:
            if type(item) is not list:
                print(item)
            else:
                func1(item)
    
    func1(l)
    
    #or
    def get(seq):
        for item in seq:
            if type(item) is list:
                get(item)
            else:
                print(item)
    get(l)
    
    二分法是算法的一种,算法是如何高效地解决问题的思路
    nums = [1, 13, 15, 23, 27, 31, 33, 57, 73, 81, 93, 94, 97, 101]  # 从小到大排列的数字列表
    def binary_search(find_num,nums):
        print(nums)
        if len(nums) == 0:
            print('not exists')
            return
        # 功能
        mid_index = len(nums) // 2
        if find_num > nums[mid_index]:
            # in the right
            nums=nums[mid_index+1:]
            # 重新运行功能,传入新列表
            binary_search(find_num,nums)
        elif find_num < nums[mid_index]:
            # in the left
            nums=nums[:mid_index]
            # 重新运行功能,传入新列表
            binary_search(find_num,nums)
        else:
            print('find it')
    
    # binary_search(97,nums)
    binary_search(95,nums)
    
  • 相关阅读:
    selenium+python+API分类总结
    Web自动化测试之六、Selenium Web控件交互
    五、Selenium元素定位的八种方法
    五、X-PATH定位元素
    五、css_selector定位总结
    pytest测试框架实战一
    python实战2
    pycharm 远程开发
    python 虚拟环境
    爬虫案例_网易云歌单
  • 原文地址:https://www.cnblogs.com/shaozheng/p/11907485.html
Copyright © 2020-2023  润新知