码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python 在问答频道中刷题积累到的小技巧(七)


    1. max(),min()函数的key参数应用:

    快速找出众数:

    1. >>> import random
    2. >>> r = [rnd(1,9) for _ in range(20)]
    3. >>> r
    4. [3, 3, 5, 9, 1, 7, 4, 1, 1, 9, 6, 8, 3, 9, 8, 8, 6, 4, 6, 6]
    5. >>> max(r, key=r.count)
    6. 6

    找最短密码(首个匹配到的):

    1. >>> from random import choices, randint as rnd
    2. >>> s = ''.join((map(chr,[*range(ord('A'),ord('Z')+1),*range(ord('a'),ord('z')+1),*range(ord('0'),ord('9')+1),ord('-')])))
    3. >>> p = [''.join(choices(s,k=rnd(3,10))) for _ in range(10)]
    4. >>> p
    5. ['fiKYKBl', 'HZjwZUGg', 'pUaKkKtrE8', '2qet35e1Q', 'is34n11F', 'Jxed96', '9K8TOE', 'sqymdfx', 'SRjuq', 'J9TBu']
    6. >>> min(p, key=lambda x:len(x))
    7. 'SRjuq'

    位数最多、最少的整数 :(首个匹配到的数,与最大值、最小值未必相等)

    1. >>> from random import choices, randint as rnd
    2. >>> n = [int(''.join(map(str,choices(range(10),k=rnd(3,10))))) for _ in range(10)]
    3. >>> n
    4. [9345447, 1030757133, 8630, 293949, 497, 1206340275, 172, 950651, 983, 138]
    5. >>> max(n, key=lambda x:len(str(x)))
    6. 1030757133
    7. >>> min(n, key=lambda x:len(str(x)))
    8. 497
    9. >>>
    10. >>> max(n)
    11. 1206340275
    12. >>> min(n)
    13. 138

     2. 列表任意指定长度的分组:

    1. def splitlist(lst,*group):
    2. res,lst = [],lst[:]
    3. for i in group:
    4. t = []
    5. for _ in range(i):
    6. if lst: t.append(lst.pop(0))
    7. else: break
    8. if t: res.append(t)
    9. if lst: res.append(lst)
    10. return res
    11. a = [1,2,3,4,5,6,7,10,11,12,20,21,23]
    12. print(splitlist(a,8,4,2,1))
    13. # [[1, 2, 3, 4, 5, 6, 7, 10], [11, 12, 20, 21], [23]]
    14. print(splitlist(a,7,3,2,1))
    15. # [[1, 2, 3, 4, 5, 6, 7], [10, 11, 12], [20, 21], [23]]
    16. print(splitlist(a,7,3,2,2))
    17. # [[1, 2, 3, 4, 5, 6, 7], [10, 11, 12], [20, 21], [23]]
    18. print(splitlist(a,7,3,2))
    19. # [[1, 2, 3, 4, 5, 6, 7], [10, 11, 12], [20, 21], [23]]
    20. print(splitlist(a,7,3))
    21. # [[1, 2, 3, 4, 5, 6, 7], [10, 11, 12], [20, 21, 23]]
    22. print(splitlist(a,7,2,2,5))
    23. # [[1, 2, 3, 4, 5, 6, 7], [10, 11], [12, 20], [21, 23]]

    3. 用numpy解多元一次方程组:

    1. import numpy as np
    2. A = [[1,-2,1],[0,2,-8],[-4,5,9]] # 系数矩阵
    3. B = [0,8,-9] # 常数矩阵
    4. x,y,z = np.linalg.inv(A).dot(B) # 求方程组的解
    5. print(f'x={x}, y={y}, z={z}') # 默认它有且只有一组解,不展开讨论

    4. 应用字典同时返回两数的和差积商余

    1. def exp(a,b):
    2. choice = { 1: lambda x, y: x + y,
    3. 2: lambda x, y: x - y,
    4. 3: lambda x, y: x * y,
    5. 4: lambda x, y: x // y,
    6. 5: lambda x, y: x % y }
    7. return tuple(choice[i+1](a,b) for i in range(5))
    8. print(exp(8,3)) # (11, 5, 24, 2, 2)
    9. print(exp(5,6)[2]) # 30

    5. 多种方法取出某字母开头的元素

    1. >>> s = ['foot','head','Face','Hair','nose','Mouth','finger','ear']
    2. >>> [w for w in s if w[0].lower()=='f']
    3. ['foot', 'Face', 'finger']
    4. >>> [w for w in s if w[0] in ('f','F')]
    5. ['foot', 'Face', 'finger']
    6. >>> [w for w in s if w.startswith(('F','f'))]
    7. ['foot', 'Face', 'finger']

    6. 输入一个整数,输错不会异常退出

    1. n = ''
    2. while not n.isnumeric(): n = input('输入一个非负整数:')
    3. n = int(n)
    1. n = ''
    2. while not (n.isnumeric() or len(n) and n[0]=='-' and n[1:].isnumeric()):
    3. n = input('输入一个整数:')
    4. n = int(n)

     

    【相关阅读】

    Python 在问答频道中刷题积累到的小技巧(一)https://hannyang.blog.csdn.net/article/details/124935045

    Python 在问答频道中刷题积累到的小技巧(二)https://hannyang.blog.csdn.net/article/details/125026881

    Python 在问答频道中刷题积累到的小技巧(三)
    https://hannyang.blog.csdn.net/article/details/125058178

    Python 在问答频道中刷题积累到的小技巧(四)
    https://hannyang.blog.csdn.net/article/details/125211774

    Python 在问答频道中刷题积累到的小技巧(五)https://hannyang.blog.csdn.net/article/details/125270812

    Python 在问答频道中刷题积累到的小技巧(六)
    https://hannyang.blog.csdn.net/article/details/125339202

  • 相关阅读:
    java字符串(String & StringBuilder)
    (九)DFI接口时序
    AI都那么发达了,我还有必要学习编程吗
    python使用PIL模块加载图像、通过resize函数改变图像的大小、使用save函数保存处理过的图像、并自定义指定保存后的格式
    【Proteus仿真】【STM32单片机】水箱液位监控系统
    从0到1 Webpack搭建Vue3开发、生产环境
    冲量在线入选北京市2022年第一批国家高新技术企业认定名单
    软件测试面试经验分享,真实面试题
    代码随想录算法训练营第23期day4| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
    电脑没电关机,wsl和docker又挂了,附解决过程
  • 原文地址:https://blog.csdn.net/boysoft2002/article/details/125439517
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号