列表推导式是在 Python 中创建列表的一种简洁而强大的方法。它们允许通过将表达式应用于可迭代中的每个项目来创建列表。
示例 1:创建 1 到 10 的列表。
squares = [x**2 for x in range(1, 11)] print(squares)
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
示例 2:创建 1 到 20 之间的偶数列表。
Evens = [x for x in range(1, 21) if x % 2 == 0] print(evens)
输出:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
示例 3:从字符串创建大写字母列表。
string = "Hello, World!"uppercase = [char.upper() for char in string if char.isalpha()]print(uppercase)
输出:['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']
上下文管理器是 Python 中管理资源的有用工具。它们允许自动分配和释放资源,确保它们被正确清理而不是悬而未决。
示例 1:使用上下文管理器打开文件。
with open('file.txt', 'r') as file: for line in file: print(line)
示例 2:使用上下文管理器获取和释放锁。
import threading lock = threading.Lock() with lock: # 做一些线程安全的工作
示例 3:使用上下文管理器连接到数据库。
import sqlite3 with sqlite3.connect('mydb.sqlite') as conn: # 做一些数据库工作
装饰器是修改 Python 中函数行为的强大工具。它们允许向函数添加功能而无需修改其源代码。
示例 1:使用装饰器测量函数的执行时间。
import timedef measure_time(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"Execution time: {end - start:.3f} seconds") return result return wrapper@measure_timedef my_function(): # do some work
示例 2:使用装饰器记录函数的参数和返回值。
def log_function(func): def wrapper(*args, **kwargs): print(f"Function {func.__name__} called with args={args} kwargs={kwargs}") result = func(*args, **kwargs) print(f"Function {func.__name__} returned {result}") return result return wrapper@log_functiondef my_function(arg1, arg2): # do some work return result
示例 3:使用装饰器缓存函数的返回值。
def cache_result(func): cache = {} def wrapper(*args): if args in cache: print(f"Using cached result for {args}") return cache[args] result = func(*args) cache[args] = result return result return wrapper@cache_resultdef expensive_function(arg1, arg2): # do some work
Lambda 函数是您可以在代码中内联定义的匿名函数。它们是创建小型一次性函数的一种便捷方法,而不会因不必要的函数定义而使代码变得混乱。
示例 1:按第二个元素对元组列表进行排序。
my_list = [(1, 4), (2, 3), (3, 2), (4, 1)]my_list.sort(key=lambda x: x[1])print(my_list)
输出: [(4, 1), (3, 2), (2, 3), (1, 4)]
示例 2:过滤数字列表以仅保留偶数。
my_list = [1, 2, 3, 4, 5, 6] Even_numbers = list(filter(lambda x: x % 2 == 0, my_list)) print(even_numbers)
输出: [2, 4, 6]
示例 3:将字符串列表映射到其长度。
my_list = ["foo", "bar", "baz"] lengths = list(map(lambda x: len(x), my_list)) print(lengths)
输出:[3, 3, 3]
命名元组是在 Python 中创建轻量级、不可变数据结构的便捷方法。它们的行为类似于元组,但具有命名字段,可以更轻松地访问其元素。
示例 1:定义一个命名元组来表示 2D 点。
来自集合导入namedtuple Point =namedtuple("Point", ["x", "y"]) p = Point(1, 2) print(px, py)
输出:1 2
示例 2:创建代表人的命名元组列表。
from collections import namedtuplePerson = namedtuple("Person", ["name", "age"])people = [ Person("Alice", 25), Person("Bob", 30), Person("Charlie", 35),]for person in people: print(f"{person.name} is {person.age} years old")
输出:
Alice is 25 years oldBob is 30 years oldCharlie is 35 years old
示例 3:使用命名元组作为函数的返回值。
from collections importnamedtuple defdivide(a,b): Result =namedtuple("Result", ["quotient", "remainder"]) return Result(a // b, a % b) result =divide(10, 3) print(f"10 除以 3 为 {result.quotient},余数为 {result.remainder}")
输出: 10 divided by 3 is 3 with a remainder of 1.