优雅高效的Python实用工具函数
发布时间:2023-12-28 09:29:39
Python作为一种高级编程语言,在数据处理、Web开发、机器学习等领域有着广泛的应用。为了提高编程效率和代码可维护性,开发人员经常需要使用一些实用的工具函数。下面是一些优雅高效的Python实用工具函数,带有使用示例。
1. flatten_list: 将多维嵌套的列表转换为一维列表。
def flatten_list(nested_list):
return [item for sublist in nested_list for item in sublist]
nested_list = [[1, 2], [3, 4, 5], [6, [7, 8]]]
flat_list = flatten_list(nested_list)
print(flat_list)
# 输出: [1, 2, 3, 4, 5, 6, 7, 8]
2. memoize: 使用字典缓存函数的计算结果,以减少重复计算。
from functools import wraps
def memoize(func):
cache = {}
@wraps(func)
def wrapper(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrapper
@memoize
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
print(fib(10))
# 输出: 55
3. timer: 计算函数执行时间。
import time
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__}执行时间: {end - start}秒")
return result
return wrapper
@timer
def slow_function(n):
time.sleep(n)
slow_function(1)
# 输出: slow_function执行时间: 1.0000629425048828秒
4. group_by: 将列表根据指定的键按照分组。
def group_by(lst, key_func):
grouped = {}
for item in lst:
key = key_func(item)
grouped.setdefault(key, []).append(item)
return grouped
people = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 25},
{'name': 'David', 'age': 30}
]
grouped_people = group_by(people, key_func=lambda x: x['age'])
print(grouped_people)
# 输出: {25: [{'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 25}], 30: [{'name': 'Bob', 'age': 30}, {'name': 'David', 'age': 30}]}
5. chunk: 将列表等分为指定大小的块。
def chunk(lst, size):
return [lst[i:i+size] for i in range(0, len(lst), size)]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
chunks = chunk(numbers, 3)
print(chunks)
# 输出: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
这些优雅高效的Python实用工具函数可以帮助开发人员简化和优化代码。通过这些例子,了解了这些功能强大的工具函数的使用方法,可以在实际开发中更好地利用Python的各种编程技巧。
