能够让你装逼的10个Python小技巧

Python十大装B语法 Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for – else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: >>> for i in [ 立即下载

列表推导式

你有一个list: bag = [1, 2, 3, 4, 5]

现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]

大多初学者,根据之前语言的经验会大概这样来做

bag = [1, 2, 3, 4, 5]
for i in range(len(bag)):
bag[i] = bag[i] * 2

但是有更好的方法:

bag = [elem * 2 for elem in bag]

很简洁对不对?这叫做Python的列表推导式 。

遍历列表

还是上面的列表。如果可能尽量避免这样做:

bag = [1, 2, 3, 4, 5]
for i in range(len(bag)):
print(bag[i])

取而代之的应该是这样:

bag = [1, 2, 3, 4, 5]
for i in bag:
print(i)

如果 x 是一个列表,你可以对它的元素进行迭代。多数情况下你不需要各元素的索引,但如果你非要这样做,那就用 enumerate 函数。它像下边的样子:

bag = [1, 2, 3, 4, 5]
for index, element in enumerate(bag):
print(index, element)

非常直观明了。

元素互换

如果你是从java或者C语言转到Python来,可能会习惯于这样:

a = 5
b = 10
# 交换 a 和 b
tmp = a
a = b
b = tmp

但Python提供了一个更自然更好的方法!

a = 5
b = 10
# 交换a 和 b
a, b = b, a

初始化列表

假如你要一个是10个整数0的列表,你可能首先想到:

bag = []
for _ in range(10):
bag.append(0)

换个方式吧:

bag = [0] * 10

看,多优雅。

注意:如果你列表包含了列表,这样做会产生浅拷贝。

举个例子:

bag_of_bags = [[0]] * 5 # [[0], [0], [0], [0], [0]]
bag_of_bags[0][0] = 1 # [[1], [1], [1], [1], [1]]

Oops!所有的列表都改变了,而我们只是想要改变第一个列表。

改一改啦:

bag_of_bags = [[0] for _ in range(5)]
# [[0], [0], [0], [0], [0]]
bag_of_bags[0][0] = 1
# [[1], [0], [0], [0], [0]]

“过早优化是万恶之源”问问自己,初始化一个列表是必须的吗?

构造字符串

你会经常需要打印字符串。要是有很多变量,避免下面这样:

name = "Raymond"
age = 22
born_in = "Oakland, CA"
string = "Hello my name is " + name + "and I'm " + str(age) + " years old. I was born in " + born_in + "."
print(string)

额,这看起来多乱呀?你可以用个漂亮简洁的方法来代替, .format 。

这样做:

name = "Raymond"
age = 22
born_in = "Oakland, CA"
string = "Hello my name is {0} and I'm {1} years old. I was born in {2}.".format(name, age, born_in)
print(string)

返回tuple元组

Python允许你在一个函数中返回多个元素,这让生活更简单。但是在解包元组的时候出出线这样的常见错误:

def binary(): return 0, 1
result = binary()
zero = result[0]
one = result[1]

这是没必要的,你完全可以换成这样:

def binary(): return 0, 1
zero, one = binary()

要是你需要所有的元素被返回,用个下划线 _ :

zero, _ = binary()

就是这么高效率!

访问Dict字典

你也会经常给 dicts 中写入 key,value (键,值)。

如果你试图访问一个不存在的于 dict 的 key ,可能会为了避免 KeyError 错误,你会倾向于这样做:

countr = {}
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]
for i in bag:
if i in countr:
countr[i] += 1 else:
countr[i] = 1
for i in range(10):
if i in countr:
print("Count of {}: {}".format(i, countr[i]))
else:
print("Count of {}: {}".format(i, 0))

但是,用 get() 是个更好的办法。

countr = {}
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]
for i in bag:
countr[i] = countr.get(i, 0) + 1
for i in range(10):
print("Count of {}: {}".format(i, countr.get(i, 0)))

当然你也可以用 setdefault 来代替。

这还用一个更简单却多费点开销的办法:

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]
# {2: 3, 3: 1, 1: 1, 5: 1, 6: 1, 7: 2, 9: 1}
countr = dict([(num, bag.count(num)) for num in bag])
for i in range(10):
print("Count of {}: {}".format(i, countr.get(i, 0)))

你也可以用 dict 推导式。

countr = {num: bag.count(num) for num in bag}

这两种方法开销大是因为它们在每次 count 被调用时都会对列表遍历。

使用库

现有的库只需导入你就可以做你真正想做的了。

还是说前面的例子,我们建一个函数来数一个数字在列表中出现的次数。那么,已经有一个库就可以做这样的事情。

from collections import Counter
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]
countr = Counter(bag)for i in range(10):
print("Count of {}: {}".format(i, countr[i]))

一些用库的理由:

代码是正确而且经过测试的。

它们的算法可能会是最优的,这样就跑的更快。

抽象化:它们指向明确而且文档友好,你可以专注于那些还没有被实现的。

最后,它都已经在那儿了,你不用再造轮子了。

在列表中切片/步进

你可以指定 start 的点和 stop 点,就像这样 list[start:stop:step] 。我们取出列表中的前5个元素:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for elem in bag[:5]:
print(elem)

这就是切片,我们指定 stop 点是5,再停止前就会从列表中取出5个元素。

要是最后5个元素怎么做?

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for elem in bag[-5:]:
print(elem)

没看明白吗? -5 意味着从列表的结尾取出5个元素。

如果你想对列表中元素间隔操作,你可能会这样做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for index, elem in enumerate(bag):
if index % 2 == 0:
print(elem)

但是你应该这样来做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for elem in bag[::2]:
print(elem)
# 或者用 ranges
bag = list(range(0,10,2))
print(bag)

这就是列表中的步进。 list[::2] 意思是遍历列表同时两步取出一个元素。

你可以用 list[::-1] 很酷的翻转列表。

tab键还是空格

长时间来看,将tab和空格混在一起会带来很多不必要的麻烦,你会看到 IndentationError: unexpected indent 。不管你选择tab键还是空格键,你应该在你的文件和项目中一直保持使用。

一个使用空格而不是tab的原因是,tab不是在所有编辑器中都一样的。视呢所用的编辑器,tab可能会被当作2到8个空格。

你也可以在写代码时用空格来定义tab。这样你可以自己选择用几个空格来当做tab。大多数Python用户是用4个空格。

使用Simulink对氢燃料电池与锂电池的混合储能系统进行建模 本文介绍了基于Simulink的氢燃料电池与锂电池混合储能系统建模与协同控制方法。系统通过氢燃料电池提供稳定能源,锂电池实现快速响应,结合DC-DC变换器和负载管理器实现动态调控。详细阐述了从模型创建、关键模块配置到控制器设计的完整流程,重点说明了功率分配算法和充放电控制策略的实现。通过仿真分析验证了系统在不同负载条件下的性能表现,包括响应速度、工作效率和稳定性等指标。该方案为新能源混合储能系统的设计与优化提供了实用指导,有助于提升系统可靠性和延长电池寿命。 阅读详情

相关推荐

Linux CentOS7文件系统(/dev/var)的容量扩充

原因是之前安装docker后,再想安装Nessus,系统说home、var文件系统的内存都不够。

JHoanna的博客 3226

Web安全和渗透测试有什么关系?

做渗透测试的一个环节就是测试web安全,需要明白漏洞产生原理,通过信息收集互联网暴露面,进行漏洞扫描,漏洞利用,必要时进行脚本自编写和手工测试,力求挖出目标存在的漏洞并提出整改建议,当然如果技术再精一些,还要学习内网渗透(工作组和域环境),白盒审计,app,小程序渗透那些了......可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。总之,web安全包含于渗透测试,但不是渗透测试的全部。

Python_0011的博客 4857

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3628

全网最全的Python教程(非常详细),从零基础入门到上岗!

人工智能的兴起,也给了Python无限可能,让Python越来越火。众所周知人工智能技术已经成为国家战略,而进入人工智能领域,Python是必经之路,Python工程师炙手可热! 腾讯、阿里、百度、网易、谷歌、滴滴等大型互联网企业更是大量使用python开发。这一系列政策和市场迹象都表明,Python确是当下发展的新趋势。

Python84310366的博客 1690

《python神经网络编程》程序实现

《python神经网络编程》程序实现 通过对这本书的学习,结合这本书的内容: 完成了以下代码: 其中NN.py实现了一个类,这个类可以完成神经网络的初始化,训练以及输入数据并得出结果。 而run.py则是对神经网络类的使用 NN.py: import numpy import scipy.special #神经网络类的实现 class neuralNetwork: #构造函数初始化类 def __init__(self,inputnodes,hiddennodes,outputnodes

ms8617484的博客 619

(25.08)Ubuntu20.04+ROS1复现FAST-LIO2

请确保在。

m0_69023437的博客 3992

python十大装逼语法

元类(Metaclass)是 Python 中一个非常高级的概念,用于创建和管理类。简单来说,元类是创建类的"类"。它们在 Python 中用于实现很多高级的面向对象编程功能,例如自动注册类、修改类的行为等。Python提供了很多高级函数(如map、filter、reduce等),可以用简洁的方式对列表进行操作。在这个方法中,我们可以添加自定义的逻辑,例如打印一些信息或者修改类的行为。使用一行代码创建一个新的列表,可以在其中进行条件过滤、循环等操作。可以在不改变函数或方法代码的情况下,添加或修改其功能。

AutotestProject 1471

PCIE Lane Margining Linux 环境配置

Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi

mysongshine的博客 1436

python装逼代码_能够让你装逼的10个Python小技巧

列表推导式你有一个list: bag = [1, 2, 3, 4, 5]现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]大多初学者,根据之前语言的经验会大概这样来做bag = [1, 2, 3, 4, 5]for i in range(len(bag)):bag[i] = bag[i] * 2但是有更好的方法:bag = [elem * 2 for elem in ...

weixin_39631301的博客 1万+

2024 年 9 月青少年软编等考 C 语言三级真题解析

2024 年 9 月青少年软编等考 C 语言三级真题解析。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 1739

在Ubuntu系统中安装和使用wxPython进行Python图形用户界面(GUI)开发

在本文中,我将向您展示如何在Ubuntu系统上安装和使用wxPython,并提供一些示例代码来帮助您开始使用这个强大的工具。在MyFrame的构造函数中,我们创建了一个wx.Panel和一个按钮,并将按钮的点击事件绑定到一个自定义的方法on_button_click上。最后,我们创建了一个wx.App的实例,创建了一个MyFrame对象并显示它,最后通过调用app.MainLoop()启动应用程序的主事件循环。这只是一个简单的示例,但它演示了如何使用wxPython创建一个基本的GUI应用程序。

qq_37934722的博客 1040

python装逼_能够让你装逼的10个Python小技巧

列表推导式你有一个list: bag = [1, 2, 3, 4, 5]现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]大多初学者,根据之前语言的经验会大概这样来做bag = [1, 2, 3, 4, 5]for i in range(len(bag)):bag[i] = bag[i] * 2但是有更好的方法:bag = [elem * 2 for elem in ...

weixin_39714849的博客 337

2026年高教社杯数学建模国赛A题解题思路:从物理方程推导到MATLAB高效求解的全流程实战指南

□所有代码能够从头运行到尾,不报错(清除workspace重新跑一遍)□论文中的每个图号、表号、公式编号与正文引用一致□附录中附上核心代码(注意:不是全部代码,而是关键求解器和后处理部分)□支撑材料压缩包包含完整代码、数据文件、README说明□摘要字数严格控制在1000字以内,突出创新点和核心结果□。

YOLO 110

python技巧-能够让你装逼的10个Python小技巧

列表推导式你有一个list: bag = [1, 2, 3, 4, 5]现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]大多初学者,根据之前语言的经验会大概这样来做bag = [1, 2, 3, 4, 5]for i in range(len(bag)):bag[i] = bag[i] * 2但是有更好的方法:bag = [elem * 2 for elem in ...

weixin_37988176的博客 134

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python十大装b语法_能够让你装逼的10个Python小技巧

列表推导式你有一个list: bag = [1, 2, 3, 4, 5]现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]大多初学者,根据之前语言的经验会大概这样来做bag = [1, 2, 3, 4, 5]for i in range(len(bag)):bag[i] = bag[i] * 2但是有更好的方法:bag = [elem * 2 for elem in ...

weixin_40009472的博客 162

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python十大装b语法_10个玩转Python的小技巧,学会了大胆去装逼!

如今,Python 已经成为一种再主流不过的编程语言了,它天生丽质,易于读写,非常实用,从而赢得了广泛的群众基础,被无数程序员热烈追捧。常言道: “流水的语言,铁打的 Python”,貌似目前它已经“睥睨天下,傲视群雄”了。其实Python已经是老司机了,它的第一个公开版本发布于1991年。不过在编程世界里,Python属于“小鲜肉”、“高颜值”,告别了以往的刻板印象。因为 Python 简单易用...

weixin_39852121的博客 193

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

如何短时间提高python面向对象_能够让你装逼的10个Python小技巧

列表推导式你有一个list: bag = [1, 2, 3, 4, 5]现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10]大多初学者,根据之前语言的经验会大概这样来做bag = [1, 2, 3, 4, 5]for i in range(len(bag)):bag[i] = bag[i] * 2但是有更好的方法:bag = [elem * 2 for elem in ...

weixin_39929715的博客 80

你会用Python做出装逼的东西吗

如果我回答:“用Python很牛逼,但不能做出装逼的东西”,那大家来学习“小白的Python入门教程”,还有多少意义? 所以,为了让装逼的小船升级为牛逼的巨轮,让大家学完“小白的Python入门教程”后可以愉快地装逼,这个逼,我决定装一把! 但是随后我冷静地仔细一想,用Python写代码装逼,这个逼不好装,装不好就装成傻逼了! 如果只是秀几行代码,没啥意思,大部分人还没...

angshen5733的博客 473

python天勤金叉编程代码大全_这些Python编程黑科技,装逼指南,高逼格代码,让你惊叹不已...

1、单行写一个评级组件"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图才发现插件什么的都弱爆了2、如何装逼用代码骂别人SB(!(~+[])+{})[--[~+""][+[]][~+[]] + !+[]]+({}+[])[[~!+[]]~+[]]3、如何用代码优雅的证明自己NB这个牛逼了console.log((...

weixin_28689809的博客 1634

Python装逼代码

鼓起白色的帆;愿你是船,剪开蓝色的波澜。生活正在你的前方微笑,勇敢的走上前去,将彩色的人生拥抱。

we123aaa4567的博客 9063

电脑课python装b专用代码,python代码生成器官网

没错,在HTML里阻止带href的默认点击操作时,都喜欢把href写成java:void(0),实际上也是依靠void操作不执行的意思。当然,除了出于装逼的原因外,实际用途上不太赞成使用void,因为void的出现是为了兼容早起ECMAScript标准中没有undefined属性。从来不需要声明一个变量的值是undefined,因为JavaScript会自动把一个未赋值的变量置为undefined。但是如果你就是强迫症发作,一定要再声明一个暂时没有值的变量的时候赋上一个undefined。

w12130826的博客 1271

装逼利器 25个Python小技巧骚断同事腰

本文我总结了25个python专属骚操作,实属提高工作效率和在同事面前准点下班的装B心情,确定不收藏吗? 在本文中,本文简述了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。它们都非常简单,但它们都很常用且能激发不一样的思路。 大家都知道 Python 是一种高级编程语言,是一门非常优美的语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。 实际上,很多人选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。此外,Py..

weixin_48272043的博客 534
上一篇: 零基础转行Python必看!今年最火的五大Python框架
下一篇: 新手学习Python需要知道的20个小技巧,加班一晚上终于整理出来了!
python0737
博客等级 码龄5年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值