Python 开发人员必备的 Python 技巧和窍门
在 Python 中编写简写语句
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
在 Python 中编写简写语句
Python 提供了简写语句和简写运算符。这些功能可以帮助你用更少的语句编写更多的逻辑。
我们将看到那些可用的简写语句。
文件示例简写.py
lambda 语句
几乎每个人都听说过 lambda 函数。lambda 语句可以帮助我们编写无需命名函数的单行函数。它会返回函数引用,你可以将其赋值给任何变量。它有点像 JavaScript 的匿名函数。
foo = lambda a: a+3
foo(3)
6
foo(8)
11
自称 Lambda
你可以编写 lambda 表达式,并让它像 JavaScript 中的自调用函数一样调用自身。我们来看一个例子。
(lambda a: a+3)(8)
11
(lambda x: x**x)(3)
27
列表理解
列表推导式是 Python 的一项强大功能。使用它,您可以减少代码量,降低代码的空间复杂度。简单的 for 循环也可以使用列表推导式来编写。
句法:
L = [源列表中元素的映射表达式(如果筛选表达式) ]
在哪里:
L变量,结果被赋值给
映射表达式,仅在 if 条件中筛选表达式大于真时,才在每次循环中执行。
这个列表推导式等价于:
result = []
for element in source-list:
if filter-expression:
result.append(mapping-expression)
例子
我们来看一个列表推导式的例子。从给定的范围内获取偶数。
- 常用代码
result = []
for i in range(10):
if i%2 == 0:
result.append(i)
print(result)
[0, 2, 4, 6, 8]
- 列表理解
[i for i in range(10) if i%2==0]
[0, 2, 4, 6, 8]
听写理解
字典推导式在 Python 2.7 和 3.x 版本中可用。这种语法可以将用于创建字典的多行代码封装成一行。它类似于列表推导式,但使用字典字面量 {} 而不是 []。
句法:
{ key : value for element in source-list if filter-expression }
让我们通过一个例子来说明如何使用它。
我有一份水果列表,我想通过改变它们的大小写将它们变成字典。
['苹果', '芒果', '橙子']
我想把所有键都转换成小写。这是我们在不使用列表推导式的情况下可以实现的。
l = ['MANGO', 'APPLE', 'ORANGE']
d = {}
for i in l:
d[i.upper()] = 1
{'ORANGE': 1, 'MANGO': 1, 'APPLE': 1}
使用简单的列表推导式。
{i.upper(): 1 for i in l}
集合理解
集合推导式的语法与字典推导式的语法非常相似,只有一些细微差别。
我们来看一个字典推导式的例子。使用以下语句可以生成一个集合。
{i.upper() for i in l}
我们没有像在字典推导式中那样指定值。
生成器表达式
你可能已经了解生成器了。任何包含 yield 语句的函数都称为生成器。生成器会返回一个可迭代对象,我们可以调用它的 next 方法来获取序列中的下一个元素。Python 为生成器提供了类似 lambda 的简写形式。它类似于列表推导式,只是将表达式用元组字面量括起来。
- 生成器函数
def gen():
for i in range(10):
yield i
g = gen()
<generator object gen at 0x7f60fa104410>
g.next()
0
g.next()
1
- 生成器表达式
同一个生成器函数可以写成如下形式。
g = (i for i in range(10))
g
<generator object <genexpr> at 0x7f60fa1045f0>
g.next()
0
简写 If Else
就像 C 语言和 JavaScript 的三元运算符 (?:) 一样,你可以用 Python 编写简写的 if-else 比较语句。考虑到代码的可读性,Python 的语法如下。
if表达式如果(条件)否则else表达式
这相当于。
if True:
print("This is True")
else:
print("This is False")
元组解包
Python 3 更强大的解包功能。如下所示。
例子:
a, rest = [1, 3, 4, 6]
在这种情况下,a 的值将为 1,列表中的其余元素将被赋值给变量 rest,即 [3, 4, 6]。
使用分隔符进行字符串连接
如果你想用随机分隔符连接字符串列表,可以使用字符串方法join来实现。
" || ".join(["hello", "world", "how", "are", "you"])
'hello || world || how || are || you'
精辟的一句话
你是否厌倦了阅读一行行代码,迷失在条件语句中?Python 单行代码或许正是你所需要的。例如,条件语句。
if alpha > 7:
beta = 999
elif alpha == 7:
beta = 99
else:
beta = 0
其实可以简化为:
beta = 999 if alpha > 7 else 99 if alpha == 7 else 0
从列表中删除重复项
大多数情况下,我们希望从列表中删除或查找重复项。让我们看看如何从列表中删除重复项。最佳方法是将列表转换为集合。集合是一种无序数据结构,包含唯一值,并且不允许复制。
listNumbers = [20, 22, 24, 26, 28, 28, 20, 30, 24]
print("Original= ", listNumbers)
listNumbers = list(set(listNumbers))
print("After removing duplicate= ", listNumbers)
如何高效地比较两个无序列表
以上两个列表包含相同的元素,只是顺序不同。让我们看看如何判断两个列表是否相同。
collections.Counter如果我们的对象是可哈希的,我们可以使用该方法。- 我们可以使用
sorted()对象是否可排序这一特性。
from collections import Counter
one = [33, 22, 11, 44, 55]
two = [22, 11, 44, 55, 33]
print("is two list are b equal", Counter(one) == Counter(two))
将字节转换为字符串
要将字节转换为字符串,我们可以对字节对象进行解码以生成字符串。您可以使用所需的字符集进行解码。
byteVar = b"pynative"
str = str(byteVar.decode("utf-8"))
print("Byte to string is" , str )
将十六进制字符串转换为整数
hexNumber = "0xfde"
stringNumber="34"
print("Hext toint", int(hexNumber, 0))
print("String to int", int(stringNumber, 0))
受到推崇的
-
教程
- 学习 Python | Codecademy
- Progate Python 类
- 面向零基础用户的视频教程 | YouTube
- Python入门 | Udacity 🆓
- Python 入门指南
- 编写更好的Python函数
- Python 学习:从零到英雄
- 使用 Python 自动化枯燥乏味的工作- 推荐
- 新波士顿蟒蛇 | YouTube
- Think Python 2e - 绿茶出版社
- Python 入门
- 欧拉计划
- Python 旋风之旅
- Python 数据科学手册
- Google推荐的 Python 课程
- Python 数据科学入门
- 面向希望获得实际项目经验的 Python 3 课程
- 笨办法学Python
-
Django - Python
-
Flask - Python
🎉 🎉 🎉