欢迎访问宙启技术站
智能推送

优雅高效的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的各种编程技巧。