码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Python练习】task-07 函数的扩展应用


    目录

    1.模拟sorted函数,写出过程和原理

     2.模拟“矩阵”运算,给出使用自定义函数循环和使用map函数两种方案,并计算下面的“乘法”运算

    3.比较使用range函数和使用enumerate函数的时间效率

    4. 比较使用itemgetter函数和使用列表推导式的时间效率

    5.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]执行a_new=sorted(a)的排序过程

    6.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]按第二个元素进行排序的代码

    7.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]按三个元素的平均值大小进行排序的代码

    8.模拟函数装饰器,对现有自定义函数加入“X时X分X秒,启动XX函数”的提示


    1.模拟sorted函数,写出过程和原理

    1. def my_sorted(list1,my_reverse=False):
    2. list2=list1[::]
    3. for i in range(len(list2)-1):
    4. for j in range(i+1,len(list2)):
    5. if list2[i]>list2[j] :
    6. list2[i],list2[j]=list2[j],list2[i]
    7. return list2 if not my_reverse else list2[::-1]
    8. list3=[4,2,4,7,5,3,8,10,-2,0,-4]
    9. print("原序列\n ",list3)
    10. print(my_sorted(list3))
    11. print("原序列是否变化\n ",list3)
    12. print(my_sorted(list3,True))
    13. print("原序列是否变化\n ",list3)
    14. str=['qwe','asd','df','my']
    15. print(my_sorted(str))
    16. print("原序列是否变化\n ",str)
    17. print(sorted(str))

     2.模拟“矩阵”运算,给出使用自定义函数循环和使用map函数两种方案,并计算下面的“乘法”运算

    1. t1 = [[1, 2, 3], [4, 5, 6]]
    2. t2 = [[11, 22, 33], [10, 20, 30]]
    3. # map()函数
    4. def matix_mul(list1,list2):
    5. return list(map(lambda x, y:list(map(lambda i, j: i*j, x, y)), list1, list2))
    6. print(matix_mul(t1, t2))
    1. #自定义函数循环
    2. def matix_mul1(list1, list2):
    3. num=[[1,2,3],[1,2,2]]
    4. for i in range(0,2):
    5. for j in range(0,3):
    6. num[i][j] = t1[i][j]*t2[i][j]
    7. return num
    8. print(matix_mul1(t1,t2))

    3.比较使用range函数和使用enumerate函数的时间效率

    for i in range(len(seasons)) :#使用range函数控制索引
    print(i, seasons[i])
    for i, e in enumerate(seasons) :#使用enumerate生成器对象
    print(i, e)

    1. import time
    2. seasons = range(100)
    3. time1=time.time()
    4. for i in range(len(seasons)) :#使用range函数控制索引
    5. print(i, seasons[i])
    6. time2=time.time()
    7. print(time2-time1)
    8. time3=time.time()
    9. for i, e in enumerate(seasons) :#使用enumerate生成器对象
    10. print(i, e)
    11. time4=time.time()
    12. print(time4-time3)

    4. 比较使用itemgetter函数和使用列表推导式的时间效率

    for i in range(100000):
    itemgetter(0,1,3,6)(b) # ('zhang', 90)

    for i in range(100000):
    [b[x] for x in range(len(b)) if x in [0,1,3,6]

    1. from operator import itemgetter
    2. b=range(100)
    3. time3=time.time()
    4. for i in range(100000):
    5. itemgetter(0,1,3,6)(b) # ('zhang', 90)
    6. time4=time.time()
    7. print(time4-time3)
    8. time1=time.time()
    9. for i in range(100000):
    10. [b[x] for x in range(len(b)) if x in [0,1,3,6]]
    11. time2=time.time()
    12. print(time2-time1)

    5.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]执行a_new=sorted(a)的排序过程

    1. a=[[20,1,3],[40,6,2],[10,5,0]]
    2. print(sorted(a))

    6.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]按第二个元素进行排序的代码

    1. a=[[20,1,3],[40,6,2],[10,5,0]]
    2. print(sorted(a,key=lambda a:a[1],reverse=False))

    7.使用sorted函数排序,写出对a=[[20,1,3], [40,6,2], [10,5,0]]按三个元素的平均值大小进行排序的代码

    1. a=[[20,1,3],[40,6,2],[10,5,0]]
    2. print(sorted(a,key=lambda a:sum(a)/3))

    8.模拟函数装饰器,对现有自定义函数加入“X时X分X秒,启动XX函数”的提示

    1. import datetime
    2. def fun1(fun):
    3. def print_fun():
    4. time=datetime.datetime.now()
    5. print(time,",启动函数fun2()")
    6. re=fun()
    7. return re
    8. return print_fun
    9. @fun1
    10. def fun2():
    11. return [i**2 for i in range(1,6)]
    12. print(fun2())

  • 相关阅读:
    大语言模型在推荐系统的实践应用
    基于uniapp框架的古汉语学习考试系统 微信小程序python+java+node.js+php
    香豆素修饰牛血清白蛋白,coumarin-Bovine Serum Albumin,BSA-coumarin
    LeetCode50天刷题计划(Day 43 —子集(20)单词搜索(40)
    海外广告投放保姆级教程,如何使用Quora广告开拓新流量市场?
    RuoYi -Cloud开源框架-跨域配置
    全面理解DAO-Web3.0基本组织形式
    『现学现忘』Git基础 — 15、blob对象详解
    vue3实现数据大屏内数据向上滚动,鼠标进入停止滚动 vue3+Vue3SeamlessScroll
    TensorFlow入门(二十四、初始化学习参数)
  • 原文地址:https://blog.csdn.net/m0_67463447/article/details/126095425
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号