推荐!彻底改变Python编码方式的十个技巧

文摘   科技   2024-08-06 06:57   江苏  








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 ** 2print(squares_dict)

使用字典生成式:

squares_dict = {i: i ** 2 for i in range(10)}print(squares_dict)
这种技巧可以简化字典创建,使代码更加优雅。



04


 枚举函数


如果您同时需要迭代器中的索引和值,枚举函数就是您的朋友。

对列表进行迭代,需要每个元素的索引。

传统方法:

fruits = ['apple', 'banana', 'cherry']index = 0for 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] = 1print(count)

使用 defaultdict:

from collections import defaultdict
text = 'aabbcc'count = defaultdict(int)for char in text: count[char] += 1print(count)

使用defaultdict 可以让代码更简洁,更容易理解。


07


itertools模块

itertools 模块包含创建迭代器的函数,可实现高效循环。

从列表中生成元素的所有组合。

推荐使用itertools.combinations:

import itertools
items = [1, 2, 3]combinations = list(itertools.combinations(items, 2))print(combinations)

itertools 为处理迭代器提供了许多有用的函数,使处理复杂数据变得更加容易。


08

f-strings格式化字符串

Python 3.6 引入了 f-strings,这是一种既可读又高效的现代字符串格式化方式。

使用变量值格式化字符串

传统方法:

name = 'John'age = 30formatted = 'Name: {}, Age: {}'.format(name, age)print(formatted)
使用 f-strings:
name = 'John'age = 30formatted = 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:
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 丰富的特性和函数集允许使用多种编程风格和解决方案,掌握这些技巧将帮助你充分发挥其潜力。



您学废了吗?






点击上方小卡片关注我




添加个人微信,进专属粉丝群!



AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
 最新文章