10个小技巧,让你的 Python 代码更加优雅~

简介: 10个小技巧,让你的 Python 代码更加优雅~
data = (1, 3, -5, 7, 9, -11)
print(data)
sortedData = sorted(data)
print(sortedData)

输出:

(1, 3, -5, 7, 9, -11)
[-11, -5, 1, 3, 7, 9]

对于复杂的可迭代对象,比如我们可以创建一个列表,列表中的每一个元素都是一个人的字典信息,然后我们按照每个人的年龄进行排序。

我们可以用 sorted()key 参数,传入一个匿名函数,让排序按照我们预想的方式进行。

data = [{
“name”: “Alex”, “age”: 18},
{
“name”: “Band”, “age”: 21},
{
“name”: “Coco”, “age”: 17}]
sorted_data = sorted(data, key=lambda x: x[“age”])
print(sorted_data)
输出:
[{‘name’: ‘Coco’, ‘age’: 17}, {‘name’: ‘Alex’, ‘age’: 18}, {‘name’: ‘Band’, ‘age’: 21}]

4. 使用集合 Set 存储唯一值


如果你有一个包含多个值的列表,并且需要去重,一个不错的技巧是将我们的列表转换为一个集合。

Python的集合是一种无序的数据类型,并且没有重复元素,还提供了不同集合之间的运算,可以求交集、并集和差集。

data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9]
setData = set(data)
print(setData)

输出:

{1, 3, 5, 7, 9}

5. 使用生成器以节省内存


有时候列表并不是最好的选择。假如我们有一个非常大的列表,有10000个元素,我们想计算所有元素的总和,虽然可以用列表来做,当如果数据量特别大的话我们可能会遇到内存问题,更好的解决方案是使用生成器。

dataList = [i for i in range(10000)]
print(sum(dataList))
dataGen = (i for i in range(10000))
print(sum(dataGen))

输出:

列表生成式与生成器具有相同的语法,不同点在于列表生成式使用的是中括号,而生成器使用的是小括号。

生成器通过类似于懒加载的方式计算我们需要的元素,因此它一次只生成一个元素,并且只在需要的时候才生成。

我们可以使用 sysgetsize() 方法看一下列表和生成器的大小。

import sys
dataList = [i for i in range(10000)]
print(sys.getsizeof(dataList), “bytes”)
dataGen = (i for i in range(10000))
print(sys.getsizeof(dataGen), “bytes”)

输出:

85176 bytes

112 bytes

6. 在字典中获取元素使用 .get() 并且设置默认值


假设我们有一个字典,其中包括不同的键,比如商品和价格,在我们的代码中的某个点,想要获得商品的价格。

当我们用 [] 简单的访问键时,如果键不在字典中,那么代码将会报错,引发一个 KeyError

dataDict = {
“name”: “Tesla”,
“price”: 250000
}
print(dataDict[“count”])
报错:
Traceback (most recent call last):
File “mian.py”, line 5, in
print(dataDict[“count”])
KeyError: ‘count’

更好的方式是使用 .get() 方法,此时如果键不存在,则不会引发 KeyError ,而是返回一个默认值,如果我们不指定默认值,它会直接返回None,如果我们指定默认值,那么它会返回我们指定的默认值。

dataDict = {
“name”: “Tesla”,
“price”: 250000
}
print(dataDict.get(“count”))
print(dataDict.get(“count”, 0))
输出:
None
0

7. 计数器 collections.Counter


如果你想计算列表中元素的数量,Python中有一个非常方便的工具。

from collections import Counter
data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9]
counter = Counter(data)
print(counter)

输出:

Counter({9: 5, 7: 4, 5: 3, 3: 2, 1: 1})

Counter 可以统计列表中不同元素的数量,并且按照出现次数降序排列,这比我们自己计算要好得多。

如果你想知道某个元素的个数的话,可以直接通过 [] 访问,如果这个元素不存在,那么将返回0,并且还可以通过 most_common() 方法返回排名靠前的几个元素。

from collections import Counter
data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9]
counter = Counter(data)
print(counter[7])
print(counter[11])
print(counter.most_common(2))
输出:
4
0
[(9, 5), (7, 4)]

8. 使用f-String格式化字符串(适用于Python 3.6+)


f-String在我看来是最佳的格式化字符串方法,我们只需要在字符串前写一个f,然后在字符串内部可以直接使用大括号来嵌入变量或表达式。

data = {
“name”: “Alex”, “age”: 18}
string = f"I’m {
data[‘name’]} and I am {
data[‘age’]} years old."
print(string)

输出:

I’m Alex and I am 18 years old.

这种方式更简单、更简洁、速度也更快。

9. 使用 .join() 拼接字符串


假如我们有一个包含不同字符串的列表,我们想把所有的字符串通过空格拼接在一起,千万不要再用 for 循环一个一个遍历然后拼接了,一种更简洁的方法是通过 .joint() 方法,它可以使用指定的字符将字符串拼接起来。

strings = [“Hello”, “World”, “!”]
print(" ".join(strings))
print(“_”.join(strings))
输出:
Hello World !
Hello_World_!

10. 使用双星号语法合并字典(适用于Python 3.5+)


如果我们有两个字典,并且希望将其合并成一个,此时我们可以使用双星号 ** 和大括号 {}语法。

info1 = {
“name”: “Alex”, “age”: 18}
info2 = {
“name”: “Alex”, “city”: “Bei Jing”}
info = {
**info1, **info2}
print(info)

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习


相关文章
|
3月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
201 26
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
366 1
|
3月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
193 1
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
258 100
|
2月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
418 95
|
3月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
261 104
|
3月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
459 99
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
156 88
|
3月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
283 102
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多