本文主要介绍一些python的极简使用技巧,可简化代码,提高工作效率。
1、列表推导式
列表推导式是Python中快速生成列表的一个非常方便的方法。但除了基本用法外,你可以使用更复杂的条件来筛选和处理数据。
未使用推导式:
squares = []
for i in range(5):
squares.append(i ** 2)
正常使用推导式:
squares = [x**2 for x in range(10)]
高级用法:筛选出偶数平方
even_squares = [x**2 for x in range(10) if x**2 % 2 == 0]
2、使用f-strings格式化字符串
手动格式化:
name = "Alice"
greeting = "Hello, " + name + "!"
f-strings格式化:
name = "Alice"
age = 30
print(f"{name} is {age} years old.") # 输出:Alice is 30 years old.
原因:使用+进行字符串拼接会导致代码可读性差,而且在复杂情况下容易出错,f-string 可读性更好。
3、使用with上下文管理器自动关闭文件
手动关闭:
file = open("example.txt", "r")
content = file.read()
file.close()
with自动关闭:
with open("example.txt", "r") as file:
content = file.read()
原因:手动关闭文件容易忘记,使用上下文管理器(with语句)会在代码执行完毕后自动关闭文件,即使发生异常也会被正确处理,更加安全可靠。
4、使用字典的items方法获取键值
不使用:
my_dict = {'a': 1, 'b': 2, 'c':3}
for key in my_dict:
print(key, my_dict[key])
使用:
my_dict = {'a': 1, 'b': 2, 'c':3}
for key, value in my_dict.items():
print(key, value)
原因:items() 提供了更直接的方式同时获取键和值,避免了额外的字典查找。
5、使用enumerate()函数获取元素及其索引值
enumerate()提供了在迭代中同时获取索引和值的优雅方式,比手动追踪索引更好; enumerate(iteration, start)函数默认包含两个参数,其中iteration参数为需要遍历的参数,比如字典、列表、元组等,start参数为开始的参数,默认为0(不写start那就是从0开始)。enumerate函数有两个返回值,第一个返回值为从start参数开始的数,第二个参数为iteration参数中的值。
不使用:
my_list = ['apple', 'banana', 'orange']
for i in range(len(my_list)):
item = my_list[i]
print(i, item)
使用:
my_list = ['apple', 'banana', 'orange']
for i, item in enumerate(my_list):
print(i, item)
6、使用生成器节省内存
对于处理大型数据集,使用生成器是一个内存高效的解决方案。生成器允许逐项处理数据,而不是一次性加载整个数据集。
# 大文件逐行读取,返回一个生成器对象,每次调用该函数,会读取文件的一行内容
def read_large_file(file_name):
with open(file_name, 'r') as file:
for line in file:
yield line.strip()
# 使用生成器处理数据
for line in read_large_file('large_data.txt'):
print(line)
7、利用zip函数同时遍历多个列表
当你需要将多个列表中的数据组合时,zip
函数可以同步遍历多个可迭代对象。
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 90, 95]
for name, score in zip(names, scores):
print(f"{name}: {score}")