大家好鸭!我是小熊猫

很多学习Python的朋友在项目实战中会遇到不少功能实现上的问题,有些问题并不是很难的问题,或者已经有了很好的方法来解决。当然,孰能生巧,当我们代码熟练了,自然就能总结一些好用的技巧,不过对于那些还在刚熟悉Python的同学可能并不会那么轻松。

本次给大家推荐一个学习这些技巧的很好的资源“30-seconds-of-python”,所有技巧方法只要30秒就能get到,完全可以利用业务时间不断积累。下面赶紧来看一下。

https://github.com/30-seconds/30-seconds-of-python

1.内容目录

下面是30秒学Python的整个目录,分为几大板块:List、Math、Object、String、Utility,以下是整理的思维脑图。


有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私号

我挑选了10个实用并很有意思的方法分享给大家,其余的感兴趣可以自行学习。

1. List:all_equal

功能实现:检验一个列表中的所有元素是否都一样。

解读:使用[1:] 和 [:-1] 来比较给定列表的所有元素。

  1. def all_equal(lst):
  2. return lst[1:] == lst[:-1]

举例:

  1. all_equal([1, 2, 3, 4, 5, 6]) # False
  2. all_equal([1, 1, 1, 1]) # True

2. List:all_unique

功能实现:如果列表所有值都是唯一的,返回 True,否则 False

解读:在给定列表上使用集合set()去重,比较它和原列表的长度。

  1. def all_unique(lst):python学习交流裙:660193417###
  2. return len(lst) == len(set(lst))

举例:

  1. x = [1,2,3,4,5,6]
  2. y = [1,2,2,3,4,5]
  3. all_unique(x) # True
  4. all_unique(y) # False

3. List:bifurcate

功能实现:将列表值分组。如果在filter的元素是True,那么对应的元素属于第一个组;否则属于第二个组。

解读:使用列表推导式和enumerate()基于filter元素到各组。

  1. def bifurcate(lst, filter):
  2. return [
  3. [x for i,x in enumerate(lst) if filter[i] == True],
  4. [x for i,x in enumerate(lst) if filter[i] == False]
  5. ]

举例:

  1. bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])
  2. # [ ['beep', 'boop', 'bar'], ['foo'] ]

4. List:difference

功能实现:返回两个iterables间的差异。

解读:创建b的集合,使用a的列表推导式保留不在_b中的元素。

  1. def difference(a, b):
  2. _b = set(b)
  3. return [item for item in a if item not in _b]

举例:

  1. difference([1, 2, 3], [1, 2, 4]) # [3]

5. List:flatten

功能实现:一次性的整合列表。

解读:使用嵌套的列表提取子列表的每个值。

  1. def flatten(lst):
  2. return [x for y in lst for x in y]

举例:

  1. flatten([[1,2,3,4],[5,6,7,8]]) # [1, 2, 3, 4, 5, 6, 7, 8]

6. Math:digitize

功能实现:将一个数分解转换为个位数字。

解读:将n字符化后使用map()函数结合int完成转化

  1. def digitize(n):
  2. return list(map(int, str(n)))

举例:

  1. digitize(123) # [1, 2, 3]

7. List:shuffle

功能实现:将列表元素顺序随机打乱。

解读:使用Fisher-Yates算法重新排序列表元素。

  1. from copy import deepcopy
  2. from random import randint
  3. def shuffle(lst):
  4. temp_lst = deepcopy(lst)
  5. m = len(temp_lst)
  6. while (m):
  7. m -= 1
  8. i = randint(0, m)
  9. temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
  10. return temp_lst

举例:

  1. foo = [1,2,3]
  2. shuffle(foo) # [2,3,1] , foo = [1,2,3]

8. Math:clamp_number

功能实现:将数字num钳在由a和b边界值规定的范围中。

解读:如果num落尽范围内,返回num;否则,返回范围内最接近的数字。

  1. def clamp_number(num,a,b):
  2. return max(min(num, max(a,b)),min(a,b))

举例:

  1. clamp_number(2, 3, 5) # 3
  2. clamp_number(1, -1, -5) # -1

9. String:byte_size

功能实现:返回字符串的字节数。

解读:使用string.encode(‘utf-8’)解码给定字符串,返回长度。

  1. def byte_size(string):
  2. return len(string.encode('utf-8'))

举例:

  1. byte_size('') # 4
  2. byte_size('Hello World') # 11

10. Math:gcd

功能实现:计算几个数的最大公因数。

解读:使用reduce()和math.gcd在给定列表上实现。

  1. from functools import reduce
  2. import math
  3. def gcd(numbers):
  4. return reduce(math.gcd, numbers)

举例:

  1. gcd([8,36,28]) # 4

以上就是30秒学python的各种小技巧。怎么样,对于一些常见操作是不是有了一些新的启发,除此之外,还有很多其它技巧可以慢慢学习,希望对各位读者有所帮助。

https://github.com/30-seconds/30-seconds-of-python

我是小熊猫,咱下篇文章再见啦(✿◡‿◡)

不是吧?30秒 就能学会一个python小技巧?!的更多相关文章

  1. Python学习笔记4-如何快速的学会一个Python的模块、方法、关键字

    想要快速的学会一个Python的模块和方法,两个函数必须要知道,那就是dir()和help() dir():能够快速的以集合的型式列出该模块下的所有内容(类.常量.方法)例: #--encoding: ...

  2. 小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  3. Day1:第一个python小程序

    Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...

  4. 第一个python小脚本

    第一个python小实验 前言 作为一个工作1年的linux运维搬砖师来说,发现没点开发能力真的是不好混啊.于是下定决心学习python! 直接上刚写的语句(大神莫鄙视) 通过控制台输入一个账号密码, ...

  5. dos界面下执行java文件将错误输出到一个文本小技巧

    如果dos下执行java出现错误,把错误记录到一个文档 正确时如图,输出结果为hello,我把String的s改为小写,出现错误,用2>命令输出到error.txt在当前目录就出现了error. ...

  6. [每天一个Linux小技巧] gdb 下一次运行多个命令

    一般gdb运行的时候,我们仅仅能输入一个命令. 如: (gdb) c (gdb) bt 假设想运行多个命令怎么办? 能否像bash那样, 使用; 如 ls; ls 结论是不行. 但能够通过gdb 内建 ...

  7. 发布一个Python小程序:ManHourCalendar

    程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...

  8. 一个简单小技巧实现手机访问.html文件网页效果

    注册登录Github不解释 settings设置往下拉 选择一个主题上传代码文件到code 打开这个文件选择此时的网址 在网址前面加上 这段代码 http://htmlpreview.github.i ...

  9. 第一个Python小爬虫

    这个爬虫是参考http://python.jobbole.com/81353/这篇文章写的 这篇文章可能年代过于久远,所以有些代码会报错,然后我自己稍微修改了一下,增加了一个getContentAll ...

随机推荐

  1. 2021.12.06 平衡树——Treap

    2021.12.06 平衡树--Treap https://www.luogu.com.cn/blog/HOJQVFNA/qian-xi-treap-ping-heng-shu 1.二叉搜索树 1.1 ...

  2. 关于Swagger优化

    背景 尽管.net6已经发布很久了,但是公司的项目由于种种原因依旧基于.net Framework.伴随着版本迭代,后端的api接口不断增多,每次在联调的时候,前端开发叫苦不迭:"小胖,你们 ...

  3. 手把手带你入门ECharts

    1.什么是ECharts ECharts,缩写来自Enterprise Charts,商业级数据图表,是来自百度商业前端数据可视化团队EFE的一个开源的纯Javascript的图表库,可以流畅的运行在 ...

  4. 软件包管理-yum私有仓库

    Linux软件安装 包的依赖关系: 软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包 安装软件包时,会因为缺少依赖的包,而导致安装包失败. 解决依赖包管理工具: ...

  5. 分享我做Dotnet9博客网站时积累的一些资料

    从2019年使用WordPress搭建Dotnet9网站,到现在手撸代码开发,介绍中间使用的一些资源,绝无保留,希望对大家有用. 1. 申请域名.搭建WordPress网站 时间点:2019年11月 ...

  6. WPF 制作雷达扫描图

    实现一个雷达扫描图. 源代码在TK_King/雷达 (gitee.com),自行下载就好了 制作思路 绘制圆形(或者称之轮) 绘制分割线 绘制扫描范围 添加扫描点 具体实现 首先我们使用自定义的控件. ...

  7. form表单,css简介,css选择器,css样式操作

    form表单 简介 表单在Web网页中用以让访问者输入数据,当提交表单时,表单中输入的数据被打包传递给Web服务器端的程序 以处理,从而使得Web服务器与用户之间具有交互功能. 表单实现前后台交互:用 ...

  8. .Net 在容器中操作宿主机

    方案描述 在 docker 容器中想操作宿主机,一般会使用 ssh 的方式,然后 .Net 通过执行远程 ssh 指令来操作宿主机.本文将使用 交互式 .Net 容器版 中提供的镜像演示 .Net 在 ...

  9. python操作MySQL与MySQL补充

    目录 python操作MySQL 基本使用 SQL注入问题 二次确认 视图 触发器 事务 存储过程 函数 流程控制 索引 练习 python操作MySQL python中支持操作MySQL的模块很多, ...

  10. RabitMQ 发布确认

    每日一句 军人天生就舍弃了战斗的意义! 概述 RabitMQ 发布确认,保证消息在磁盘上. 前提条件 1.队列必须持久化 队列持久化 2.队列中的消息必须持久化 消息持久化 使用 三种发布确认的方式: ...