首页 知识 正文
文章详情

目录:

1.python 302

2.python 3

3.python30-3**2

4.python321

5.python39dll

6.python32

7.python103

8.python \033

9.python3gui

10.python3 100例

1.python 302

来源:授权自AI科技大本营(ID:rgznai100)本文约4900字,建议阅读10+分钟本文为你提供30个Python技巧,请收下![ 导读 ]2020年,你又立了什么新的 Flag?新一年,我们先为大家准备 30 个非常优秀的 Python 实践技巧。

2.python 3

希望这些诀窍能在实际工作中帮助大家,并且学到一些有用的知识1. 使用 python 3由于官方从2020年1月1日起就停止了对python2.7的更新支持,因此本教程的大部分例子都只能在python 3环境下运行。

3.python30-3**2

如果你仍然在使用2.7版本,请先升级到python 32. 检查并使用满足需求的最小python版本 你可以在代码中检查Python 版本,以确保你的代码使用者没有使用不兼容的版本运行脚本使用以下代码进行简单的检查:。

4.python321

if not sys.version_info > (2, 7): # berate your user for running a 10 year # python versionelif not sys.version_info >= (3, 5): # Kindly tell your user (s)he needs to upgrade # because youre using 3.5 features

5.python39dll

3. 使用IPython

6.python32

IPython 基本上是一个增强的shell,仅仅是为了自动补全功能,IPython也是值得使用的,但其实它还有更多作用,包括内建的Magic命令,这里列举了一些:%cd:改变当前的工作目录;%edit:打开编辑器并在关闭编辑器后执行键入的代码;

7.python103

%env:显示当前的环境变量;%pip:install [pkgs] 在不离开交互式shell的情况下安装功能包;%time 和 %timeit:类似于python中的time模块,可以为代码运行计时完整的命令列表参见:

8.python \033

https://ipython.readthedocs.io/en/stable/interactive/magics.htmlIPython的另一个有用功能是可以使用之前任意一行代码的输出,代码的输入和输入实际上都是对象,例如可以通过 Out[3] 来使用第三次运行代码的输出对象。

9.python3gui

安装IPython的指令是:pip3 install ipython4. 列表解析式 列表解析式可以用来替换通过loop来填充列表的丑陋方法,其基本语法是:[ expression for item in list if conditional ]

10.python3 100例

一个非常基础的例子,用于生成包含连续数字的列表:mylist=[iforiinrange(10)]print(mylist)#[0,1,2,3,4,5,6,7,8,9]由于可以使用表达式,因此可以通过更复杂的数学方法来生成列表:

squares=[x**2forxinrange(10)]print(squares)#[0,1,4,9,16,25,36,49,64,81]甚至也可以调用外部函数:defsome_function(a):

return(a+5)/2my_formula=[some_function(i)foriinrange(10)]print(my_formula)#[2,3,3,4,4,5,5,6,6,7]最后,也可以用if作为生成条件来对列表进行过滤。

在下面的例子中,只有偶数被保留:filtered=[iforiinrange(20)ifi%2==0]print(filtered)#[0,2,4,6,8,10,12,14,16,18]5. 检查对象的内存占用情况

通过sys.getsizeof(object)命令可以查看任何对象的内存使用情况:import sysmylist = range(0, 10000)print(sys.getsizeof(mylist))

# 48这是因为range函数返回的是一个类对象,这个类对象表现为一个列表因此使用range函数比使用实际的包含一万个数字的列表要更加节省内存 可以通过上面第四条中提到的列表解析式创建一个同样大小的实际列表:import sysmyreallist = [x for x in range(0, 10000)]print(sys.getsizeof(myreallist))# 87632。

实际内存占用87632字节,远高于通过range函数生成的对象6. 返回多个值 Pyhon中的函数都可以返回多个变量,而不需要字典,列表或者类作为返回对象方法如下:defget_user(id):# fetch user from database # …. return name, birthdatename, birthdate = get_user(4)

对于有限数量的返回值,这是可以的但是任何超过3个值的内容都应该放到一个(data)类中7. 使用 data 类从3.7版本开始,python提供了 data 类与常规类或其他替代方法(如返回多个值或字典)相比,有以下几个优点:。

数据类需要至少一定数量的代码;可以通过 __eq__ 方法来比较不同的data类对象;可以 __repr__ 通过很容易地打印一个数据类来进行调试;数据类需要类型提示,因此减少了 bug一个data类的例子如下:。

fromdataclassesimportdataclass@dataclassclassCard:rank: str suit: strcard = Card(“Q”, “hearts”)print(card == card)# Trueprint(card.rank)#

Qprint(card)Card(rank=Q, suit=hearts)详细教程参见:https://realpython.com/python-data-classes/8. 就地变量交换 一个简洁的技巧,可以节省几行代码:

a = 1b = 2a, b = b, aprint (a)# 2print (b)# 19. 字典合并(Python 3.5+) 从python 3.5开始,字典的合并变得更简单了:dict1={a:

1,b:2}dict2={b:3,c:4}merged={**dict1,**dict2}print(merged)#{a:1,b:3,c:4}10. 将字符串转化为标题格式 在标题格式中,非介词的首字母会大写。

可以通过.title()方法实现:mystring = “10 awesome python tricks”print(mystring.title())10 Awesome Python Tricks

11. 将字符串分离并存储到列表中 可以按任意字符来分割字符串,并存储到列表中,例如按空格来分割字符串:mystring = “The quick brown fox”mylist = mystring.split()

print(mylist)# [The, quick, brown, fox]12. 将列表中的字符串合并到一起 与上一条的功能正好相反,从列表中创建字符串,并在两个单词间插入空格:mylist = [

The, quick, brown, fox]mystring = ” “.join(mylist)print(mystring)# The quick brown fox也许你会疑惑,为什么不使用mylist.join(” “)呢?归根结底,String.join()函数不仅可以连接列表,还可以连接任何可迭代的列表。

将它放在String中会阻止在多个位置实现相同的功能13. Emoji

这些表情具有很强的表达能力,能给人留下深刻印象更重要的是,这在分析社交媒体数据时尤其有用 首先通过以下命令安装emoji模块:pip3 install emoji 可以按照以下方法使用表情:import。

emojiresult = emoji.emojize(Python is :thumbs_up:)print(result)# Python is # You can also reverse this:result = emoji.demojize(

Python is )print(result)# Python is :thumbs_up:更多复杂的例子以及文档,参见:https://pypi.org/project/emoji/14. 列表切片操作

列表切片的基本语法是:a[start:stop:step]start,stop和step都是可选的(可填可不填),默认值是:start:0stop:列表的末尾step:1一些例子如下:# We can easily create a new list from # the first two elements of a list:first_two = [1, 2, 3, 4, 5][0:2]print(first_two)# [1, 2]# And if we use a step value of 2, # we can skip over every second number# like this:steps = [1, 2, 3, 4, 5][0:5:2]print(steps)# [1, 3, 5]# This works on strings too. In Python,# you can treat a string like a list of# letters:mystring = “abcdefdn nimt”[::2]print(mystring)# aced it

15. 翻转字符串和列表可以用切片操作来翻转列表或字符串,将step设置为负值即可实现:revstring = “abcdefg”[::-1]print(revstring)# gfedcbarevarray = [

1, 2, 3, 4, 5][::-1]print(revarray)# [5, 4, 3, 2, 1]16. 图片显示可以通过Pillow模块来显示图片,例如显示Kitty小猫,首先安装python图片库:

pip3 install Pillow然后下载你要显示的图片,并重命名然后可以通过以下命令来显示图片:from PIL import Imageim = Image.open(“kittens.jpg”。

)im.show()print(im.format, im.size, im.mode)# JPEG (1920, 1357) RGB或者也可以直接通过IPython来显示:

Pillow的功能远不止显示图片它可以对图片进行分析,调整大小,滤波,增强,变形等等更多资料详见文档:https://pillow.readthedocs.io/en/stable/17. 使用map()函数。

Python的一个内建函数是 map()map()的基本语法是:map(function, something_iterable) 传入的参数是一个函数,和一个需要执行的对象,可以是任何可迭代对象在下面的例子中使用的是list:。

def upper(s): return s.upper()mylist = list(map(upper, [sentence, fragment]))print(mylist)# [SENTENCE

, FRAGMENT]# Convert a string representation of# a number into a list of ints.list_of_ints = list(map

(int, “1234567”)))print(list_of_ints)# [1, 2, 3, 4, 5, 6, 7] map()是一个代替循环的好方式,可以在你的代码中尝试使用map()函数18. 从列表或字符串中获取唯一元素。

通过set()函数可以将列表或字符串转换为集合,集合中的不含重复元素:mylist=[1,1,2,3,4,5,5,5,6,6]print(set(mylist))#{1,2,3,4,5,6}#Andsince

astringcanbetreatedlikea# list of letters, you can also get the # unique letters from a string this way:print (set(“aaabbbcccdddeeefff”))# {a, b, c, d, e, f}

19. 找出最常出现的值查找列表或字符串中最常出现的值:test=[1,2,3,4,2,2,3,1,4,4,4]print(max(set(test),key=test.count))#4你可以尝试自行理解上述代码。

好吧,也许你并没有尝试上述代码的工作原理如下:max()将返回列表中的最大值key参数接受单个参数函数确定定制排序顺序,在本例中,它是test.count,该函数应用于iterable对象中的每个元素.count()是列表的一个内建函数,该函数接收一个参数,并计算该参数的出现次数。

因此在本例中,test.count(1)返回2,testcount(4)返回4set(test)返回test列表中的所有唯一值,因此是{1,2,3,4}因此在上面的这行语句中我们首先找出了test列表的所有独特值,即{1,2,3,4}。

接着,将.count函数应用于set中的每个值,得到一个数量列表,然后通过max找出数量最大的值20. 创建进度条可以自行创建进度条,但也可以通过progress模块来快速创建:pip3 install progress

然后通过以下代码来创建进度条:from progress.bar import Barbar = Bar(Processing, max=20)for i in range(20): # Do some work bar.next()bar.finish()

效果如下:

21. 在交互式shell中使用用 _ 来获取上一个表达式的运行结果可以使用下划线操作符来获取最后运行的表达式的输出,在IPython中操作如下:In[1]: 3 * 3Out[1]: 9In[2]: _ + 3

Out[2]: 12 这种方法在python shell中也是适用的,IPython还可以通过Out[n]来获取任意第n个表达式的输出结果22. 快速创建web服务器您可以快速启动web服务器,来提供当前工作目录的内容:。

python3-mhttp.server如果您想与同事共享一些内容,或者想测试一个简单的HTML站点,这是非常有用的23. 多行字符串虽然可以使用三重引号在代码中包含多行字符串,但这并不理想在三重引号之间的所有内容都变成字符串,包括格式。

相比我更喜欢第二种方式,它将多行连接在一起,允许你很好地格式化代码惟一的缺点是需要显式地放入新行:s1 = “””Multi line strings can be put between triple quotes. Its not ideal when formatting your code though”””

print (s1)# Multi line strings can be put# between triple quotes. Its not ideal# when formatting your code thoughs2 = (“You can also concatenate multiple\n” +”strings this way, but youll have to\n””explicitly put in the newlines”)print(s2)# You can also concatenate multiple# strings this way, but youll have to# explicitly put in the newlines

24. 用于条件赋值的三元运算符这是另一种使你代码变得简洁,同时保持可读性的方法:[on_true]if[expression]else[on_false]一个简单的例子如下:x = “Success!”

if (y == 2) else “Failed!”25. 统计元素的出现次数可以使用Collections依赖包中的Counter方法来获得一个包含列表中所有惟一元素计数的字典:fromcollections

importCountermylist=[1,1,2,3,4,5,5,5,6,6]c=Counter(mylist)print(c)#Counter({1:2,2:1,3:1,4:1,5:3,6:2})#

Anditworksonstringstoo:print(Counter(“aaaaabbbbbccccc”))#Counter({a:5,b:5,c:5})26. 比较运算符的连接可以在python中链接比较运算符,从而使代码更简洁,可读性更强:

x = 10# Instead of:if x > 5and x < 15:print(“Yes”)# yes# You can also write:if5 < x < 15:print(“Yes”)# Yes

27. 加入色彩

通过 Colorama 依赖包,可以在终端中添加更多色彩:from colorama import Fore, Back, Styleprint(Fore.RED + some red text)print

(Back.GREEN + and with a green background)print(Style.DIM + and in dim text)print(Style.RESET_ALL)print

(back to normal now)关于Colorama依赖包的更多信息,参见:https://pypi.org/project/colorama/28. 日期处理python-dateutil模块为标准的datetime模块提供了强大的扩展。

首先安装该模块:pip3 install python-dateutil你可以用这个库做很多很酷的事情我将把我认为特别有用的一个功能作为示例:日志文件中日期的模糊解析等如下:from dateutil.parser 。

import parselogline = INFO 2020-01-01T00:00:01 Happy new year, human.timestamp = parse(log_line, fuzzy=

True)print(timestamp)# 2020-01-01 00:00:01只要记住,如果datatime不具备某个功能,那datautil一定有该功能,datautil是datatime功能的延续。

29. 整除在Python 2中,除法运算符(/)默认为整数除法,除非其中一个操作数是浮点数如下:# Python 25 / 2 = 25 / 2.0 = 2.5在python3中,除法运算符/默认为浮点除法,//运算符变成了整数除法。

所以有:Python35/2=2.55//2=2对于这种变化背后的完整动机,可以阅读PEP-0238:https://www.python.org/dev/peps/pep-0238/30. 通过chardet检测字符集合

可以使用chardet模块来检测文件中的字符集合这在分析大量随机文本时非常有用安装chardet模块:pip install chardet现在你有了一个额外的命令行工具chardetect,它可以这样使用:。

chardetectsomefile.txtsomefile.txt: asciiwithconfidence 1.0你也可以通过编程的方式来使用这个依赖包详见技术文档:https://chardet.readthedocs.io/en/latest/usage.html。

以上就是30个python的技巧,希望这些技巧能帮助你在新的一年里有个不错的开始编辑:黄继彦校对:林亦霖—完—关注清华-青岛数据科学研究院官方微信公众平台“ THU数据派 ”及姊妹号“ 数据派THU ”获取更多讲座福利及优质内容。

相关推荐
四月实战公开课丨高效公式让小白也能做出大神级项目作品
目录: 1.四月攻势 2.四月战报 1.四月攻势 全世界风靡的网课  如何进行1V1、1VN通讯?  如何用C4D做出dribbble大神作…
头像
知识 2024-06-06
Python学习教程公开课:好玩的Python
目录: 1.python入门公开课 2.python讲课视频 3.python课程入门 4.python的优质课 5.python 课程真的…
头像
知识 2024-06-06
MIT Python 公开课第三课要点-算法是怎样演进的
目录: 1.python算法课程 2.python算法教程这本书怎么样 3.python 算法导论 4.python算法基础 5.pytho…
头像
知识 2024-06-06
MIT Python 公开课第四课要点-函数也是一个对象
目录: 1.mit python 2.mit python 公开课 3.mit python凯撒密码 4.mit python作业答案 5.…
头像
知识 2024-06-06
清华教授用了12小时讲完的Python,整整311集,拿走不谢!
目录: 1.清华大学python视频 2.清华python用什么课本 3.python清华大学学生用书 4.清华大学出版社python 5.…
头像
知识 2024-06-06
自学c4d要多久才能出去工作 学习c4d建模渲染
目录: 1.自学c4d需要多久 2.学好c4d需要多久 3.c4d自学能学会么 4.自学c4d能找到工作吗 5.c4d学多久可以找工作 6.…
头像
知识 2024-06-06