每30秒学会一个Python小技巧,GitHub星数4600+

news/2024/7/5 2:35:44
640?wx_fmt=jpeg
(图片付费下载自视觉中国)

作者 | xiaoyu,数据爱好者
来源 | Python数据科学(ID:PyDataScience)


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

本次给大家推荐一个学习这些技巧的很好的资源“30-seconds-of-python”,所有技巧方法只要30秒就能get到,完全可以利用业务时间不断积累。下面赶紧来看一下。
https://github.com/30-seconds/30-seconds-of-python
640?wx_fmt=png
内容目录
下面是30秒学Python的整个目录,分为几大板块:List、Math、Object、String、Utility,以下是整理的思维脑图。
640?wx_fmt=jpeg

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


1. List:all_equal

功能实现:检验一个列表中的所有元素是否都一样。
解读:使用[1:] 和 [:-1] 来比较给定列表的所有元素。
def all_equal(lst):
return lst[1:] == lst[:-1]
举例:
all_equal([1, 2, 3, 4, 5, 6]) # False
all_equal([1, 1, 1, 1]) # True


2. List:all_unique

功能实现:如果列表所有值都是唯一的,返回 True,否则False
解读:在给定列表上使用集合set()去重,比较它和原列表的长度。


def all_unique(lst):
return len(lst) == len(set(lst))
举例:
x = [1,2,3,4,5,6]
y = [1,2,2,3,4,5]
all_unique(x) # True
all_unique(y) # False


3. List:bifurcate

功能实现:将列表值分组。如果在filter的元素是True,那么对应的元素属于第一个组;否则属于第二个组。
解读:使用列表推导式和enumerate()基于filter元素到各组。
def bifurcate(lst, filter):
return [
[x for i,x in enumerate(lst) if filter[i] == True],
[x for i,x in enumerate(lst) if filter[i] == False]
]
举例:
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])
# [ ['beep', 'boop', 'bar'], ['foo'] ]


4. List:difference

功能实现:返回两个iterables间的差异。
解读:创建b的集合,使用a的列表推导式保留不在_b中的元素。
def difference(a, b):
_b = set(b)
return [item for item in a if item not in _b]


举例:


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


5. List:flatten

功能实现:一次性的整合列表。
解读:使用嵌套的列表提取子列表的每个值。
def flatten(lst):
return [x for y in lst for x in y]
举例:
flatten([[1,2,3,4],[5,6,7,8]]) # [1, 2, 3, 4, 5, 6, 7, 8]


6. Math:digitize

功能实现:将一个数分解转换为个位数字。
解读:将n字符化后使用map()函数结合int完成转化
def digitize(n):
return list(map(int, str(n)))


举例:
digitize(123) # [1, 2, 3]

7. List:shuffle

功能实现:将列表元素顺序随机打乱。
解读:使用Fisher-Yates算法重新排序列表元素。
from copy import deepcopy
from random import randint

def shuffle(lst):
temp_lst = deepcopy(lst)
m = len(temp_lst)
while (m):
m -= 1
i = randint(0, m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst
举例:
foo = [1,2,3]
shuffle(foo) # [2,3,1] , foo = [1,2,3]


8. Math:clamp_number

功能实现:将数字num钳在由a和b边界值规定的范围中。
解读:如果num落尽范围内,返回num;否则,返回范围内最接近的数字。
def clamp_number(num,a,b):
return max(min(num, max(a,b)),min(a,b))
举例:
clamp_number(2, 3, 5) # 3
clamp_number(1, -1, -5) # -1

9. String:
byte_size

功能实现:返回字符串的字节数。
解读:使用string.encode('utf-8')解码给定字符串,返回长度。
def byte_size(string):
return len(string.encode('utf-8'))
举例:
byte_size('?') # 4
byte_size('Hello World') # 11


10. Math:gcd

功能实现:计算几个数的最大公因数。
解读:使用reduce()和math.gcd在给定列表上实现。
from functools import reduce
import math

def gcd(numbers):
return reduce(math.gcd, numbers)


举例:
gcd([8,36,28]) # 4


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

原文链接:

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


(*本文为 AI科技大本营转载文章,载请联系原作者


精彩推荐


早鸟票倒计时最后1天,扫码购票立减2600元

2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。


640?wx_fmt=png


推荐阅读

  • 简单粗暴上手TensorFlow 2.0,北大学霸力作,必须人手一册

  • 分析Booking的150种机器学习模型,我总结了6条教训

  • 微软也爱Python:VS Code Python全新发布!Jupyter Notebook原生支持终于来了

  • 如何保护你的Python代码(一)——现有加密方案

  • 罗永浩向老同事道歉;三星漏洞已波及四千万用户;Clojure 1.11 即将发布 | 极客头条

  • 真·上天!NASA招聘区块链"多功能复合型"人才, 欲保护飞行数据安全……

  • 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人

  • 【光说不练假把式】今天说一说Kubernetes 在有赞的实践

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢


http://lihuaxi.xjx100.cn/news/278448.html

相关文章

XSD 空元素概述

空的复合元素不能包含内容&#xff0c;只能含有属性。 复合空元素 一个空的 XML 元素&#xff1a; <product prodid"1345" />上面的 "product" 元素根本没有内容。为了定义无内容的类型&#xff0c;我们就必须声明一个在其内容中只能包含元素的类型…

使用Apache cxf 和Spring在Tomcat下发布Webservice指南

转载 http://blog.csdn.net/zhangzhaokun/article/details/4750021 最近学习了如何使用apache cxf和Spring发布webservice&#xff0c;虽然网上的资料很多&#xff0c;但是没有一个文档可以让读者按照操作步骤来实现完整的发布流程&#xff0c;都需要多篇文件杂合在一起&#x…

再加力度!浙江抢人!博士补120万,硕士补70万,本科补20万

点上方蓝字视学算法获取更多干货在右上方 设为星标 ★&#xff0c;与你不见不散仅作学术分享&#xff0c;不代表本公众号立场&#xff0c;侵权联系删除转载于&#xff1a;本文来源&#xff1a;金华日报 募格学术作者 | 王卫英 金旻博士购房一次性补贴80万元&#xff08;缴…

jmeter csv参数化_运用Jmeter参数化来实现接口自动化测试

本文记录如何使用Jmeter参数化&#xff08;csv)实现接口自动化——测试Token不同入参情况下&#xff0c;接口请求能够返回正确的结果1. 首先需要使用Jmeter获取一个Token&#xff0c;如何获取暂略&#xff08;同一般访问请求方式一样&#xff09;2. 在Jmeter中添加以下元件&…

一文了解点云及处理方法

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达本文转自&#xff1a;新机器视觉点云概念点云与三维图像的关系&#xff1a;三维图像是一种特殊的信息表达形式&#xff0c;其特征是表达的空间中三个维度的数据&#xff0…

Spring Boot + Vue + Shiro 实现前后端分离、权限控制

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试资料来源&#xff1a;http://sina.lt/gauR本文总结自实习中对项目的重构。原先项目采用Springbootfreemarker模版&#xff0c;开发过程中觉得前端逻辑写的实在恶心&#xff0c;后端Controller层还必…

XSD 复合元素概述

复合元素包含了其他的元素及/或属性。 什么是复合元素&#xff1f; 复合元素指包含其他元素及/或属性的 XML 元素。 有四种类型的复合元素&#xff1a; 空元素包含其他元素的元素仅包含文本的元素包含元素和文本的元素 注意&#xff1a; 上述元素均可包含属性&#xff01; …

乘风破浪的博士:2019 ACM博士论文奖公布,清华姚班毕业生、MIT学霸吴佳俊获荣誉提名...

机器之心报道参与&#xff1a;魔王、杜伟、小舟一年一度的 ACM 博士论文奖今日发布&#xff0c;毕业于特拉维夫大学的 Dor Minzer 获得该奖项。荣誉提名奖则授予了瑞士洛桑联邦理工学院&#xff08;EPFL&#xff09;博士 Jakub Tarnawski 和 MIT 博士吴佳俊。今日&#xff0c;2…