每个Python开发者需要学习的9个技巧
Python 很容易学,但很难精通。 你可能已经写了一些脚本,做了两三个项目。但如果你想更上一层楼,你需要那些区分初学者和专业人士的 Python 技巧。
现在,让我们开始吧。
1.像专业人士一样使用列表推导式
列表推导式适用于一行代码的场景。
示例:展平列表的列表
nested_list = [[1, 2], [3, 4], [5, 6]]
flat_list = [item for sublist in nested_list for item in sublist]
print(flat_list) # 输出:[1, 2, 3, 4, 5, 6]
为什么这么酷:它去除了 for 循环,让你的代码更易读。
2. 不使用临时变量
大多数语言需要临时变量来交换值。Python?不需要。
示例:
a, b = 10, 20
a, b = b, a
print(a, b) # 输出:20, 10
简单、干净,比使用第三个变量优雅得多。
3. 使用 zip()合并列表
想将两个列表合并成对?zip() 让这变得轻而易举。
示例:将名字和年龄配对
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
输出:
Alice is 25 years old.
Bob is 30 years old.
Charlie is 35 years old.
zip() 让你的代码更紧凑、更易读。
4.enumerate()的力量
停止使用 range(len(some_list))。enumerate() 是更干净的方式。
示例:带索引循环
languages = ["Python", "JavaScript", "Go"]
for index, lang in enumerate(languages, start=1):
print(f"{index}. {lang}")
输出:
1. Python
2. JavaScript
3. Go
不再有 awkward for i in range(len(...)) 的麻烦。
5.使用字典推导式让代码更整洁
你见过列表推导式,但你知道字典也可以这样做吗?
示例:将列表转换为字典
fruits = ["apple", "banana", "cherry"]
fruit_dict = {fruit: len(fruit) for fruit in fruits}
print(fruit_dict)
输出:
{'apple': 5, 'banana': 6, 'cherry': 6}
当你需要快速转换数据时,这特别有用。
6.使用 collections.Counter快速计数
如果你需要计数出现次数,不要浪费时间写循环——使用 Counter。
示例:计数字符频率
from collections import Counter
word = "mississippi"
counter = Counter(word)
print(counter)
输出:
{'i': 4, 's': 4, 'p': 2, 'm': 1}
对于频率分析和快速统计来说非常完美。
7. 使用 *和 **解包
解包是一个杀手级特性,让函数调用和数据处理变得轻而易举。
示例:合并字典
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged_dict = {**dict1, **dict2}
print(merged_dict)
输出:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
你也可以使用 * 将列表拆分为变量:
first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last) # 输出:1 [2, 3, 4] 5
这让你的代码更具灵活性。
8. 使用 breakpoint()
厌倦了通过打印变量来调试?改用 breakpoint() 吧。
示例:让调试变得简单
def add(a, b):
breakpoint() # 打开交互式调试会话
return a + b
add(5, 10)
现在,当你运行脚本时,Python 会打开一个交互式调试器,让你可以实时检查变量。
9.使用 functools.lru_cache提高速度
如果你多次调用昂贵的函数,缓存可以 显著 提高性能。
示例:快速递归的记忆化
from functools import lru_cache
@lru_cache(maxsize=1000)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
原文:
https://dev.to/0x3d_site/python-one-trick-at-a-time-a-guide-for-devto-readers-hj5?bb=215474