01
引言
大家好,我是AI算法之道!
Python是我最喜欢的编程语言之一,它向来以其简单性、多功能性和可读性而闻名。
多年来,我发现了一些 Python 技巧,它们极大地改善了我的工作流程,让编码变得更有趣、更高效。在本文中,我将分享其中的十个技巧,并通过代码片段来展示它们的实用性。
02
列表生成式
列表生成式是一种功能强大的工具,能以简洁易读的方式创建列表。它可以用一行代码取代多行代码。
假设我们想为 0 到 9 的数字创建一个列表。
传统方法:
squares = []
for i in range(10):
squares.append(i ** 2)
print(squares)
使用列表生成式:
squares = [i ** 2 for i in range(10)]
print(squares)
列表生成不仅能缩短代码,还能提高代码的可读性。
03
字典生成式
让我们创建一个字典,键是数字,值是它们的平方
传统方法:
squares_dict = {}
for i in range(10):
squares_dict[i] = i ** 2
print(squares_dict)
使用字典生成式:
squares_dict = {i: i ** 2 for i in range(10)}
print(squares_dict)
04
枚举函数
如果您同时需要迭代器中的索引和值,枚举函数就是您的朋友。
对列表进行迭代,需要每个元素的索引。
传统方法:
fruits = ['apple', 'banana', 'cherry']
index = 0
for fruit in fruits:
print(index, fruit)
index += 1
使用枚举函数:
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
对比可以看出,使用枚举函数enumerate()可以使代码更简洁、更 Pythonic。
05
zip函数
zip 函数可用于同时迭代多个可迭代对象。
将两个列表中的元素配对。
传统方法:
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 95]
paired = []
for i in range(len(names)):
paired.append((names[i], scores[i]))
print(paired)
使用zip函数:
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 95]
paired = list(zip(names, scores))
print(paired)
函数zip 简化了代码,提高了可读性。
06
defaultdict
defaultdict 为缺失的键提供了默认值,这可以简化处理字典时的代码。
计算字符串中出现的字符个数。
传统方法:
text = 'aabbcc'
count = {}
for char in text:
if char in count:
count[char] += 1
else:
count[char] = 1
print(count)
使用 defaultdict:
from collections import defaultdict
text = 'aabbcc'
count = defaultdict(int)
for char in text:
count[char] += 1
print(count)
使用defaultdict 可以让代码更简洁,更容易理解。
07
itertools模块
itertools 模块包含创建迭代器的函数,可实现高效循环。
从列表中生成元素的所有组合。
推荐使用itertools.combinations:
import itertools
items = [1, 2, 3]
combinations = list(itertools.combinations(items, 2))
print(combinations)
itertools 为处理迭代器提供了许多有用的函数,使处理复杂数据变得更加容易。
f-strings格式化字符串
Python 3.6 引入了 f-strings,这是一种既可读又高效的现代字符串格式化方式。
使用变量值格式化字符串
传统方法:
name = 'John'
age = 30
formatted = 'Name: {}, Age: {}'.format(name, age)
print(formatted)
name = 'John'
age = 30
formatted = f'Name: {name}, Age: {age}'
print(formatted)
对比可以看出,f-strings 比老式的 format() 函数更直观、更快捷。
09
资源管理器
with 语句简化了资源管理,确保资源得到妥善清理。
从文件中读取
传统方法:
file = open('example.txt', 'r')
try:
content = file.read()
finally:
file.close()
print(content)
with open('example.txt', 'r') as file:
content = file.read()
print(content)
with 语句减少了代码语句,使资源管理更加稳健。
10
map函数
map 函数对可迭代项中的所有项应用一个函数,并返回一个 map 对象。
对列表中的每个项目应用一个函数。
传统方法:
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared = [square(num) for num in numbers]
print(squared)
使用map函数:
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared = list(map(square, numbers))
print(squared)
函数map可以使大家的代码更实用、更简洁。
11
timeit模块
timeit 模块用于测量小代码段的执行时间,这对性能测试非常有用。
测量执行一段代码所需的时间。
代码如下:
import timeit
code_to_test = '''
numbers = [i for i in range(1000)]
squared = [x ** 2 for x in numbers]
'''
execution_time = timeit.timeit(code_to_test, number=1000)
print(f'Execution time: {execution_time} seconds')
timeit 提供精确的执行时间测量,有助于优化代码。
12
总结
这些 Python 技巧可以改变你的编码工作流程,使你的代码更简洁、更易读、更高效。将这些技巧融入您的编码实践中,您会发现自己编写的代码更简洁,解决问题的效率更高。Python 丰富的特性和函数集允许使用多种编程风格和解决方案,掌握这些技巧将帮助你充分发挥其潜力。
您学废了吗?
点击上方小卡片关注我
添加个人微信,进专属粉丝群!