摘要:在此示例中,将创建一个生成对象,然后调用下一个函数以获取下一个值。正在检查该值是否不是负 1,然后我正在调用其他函数,然后获取下一个值。现在看看海象的相同示例——
这是在 python 3.8 版本中发布的。这有助于在使用 inside 函数时定义值。
def extract_val: for i in range(10): yield i yield -1def some_func(val): passgen_obj = extract_valval = next(gen_obj)while val != -1: some_func(val) val = next(gen_obj)在此示例中,将创建一个生成对象,然后调用下一个函数以获取下一个值。
正在检查该值是否不是负 1,然后我正在调用其他函数,然后获取下一个值。现在看看海象的相同示例——
基本上,在这里使用值作为循环的结果,同时使用结果作为 while 循环中条件的一部分。
dict_data = { 1: "value1", 2: "value2",}def print_date(key, value): print(key, value)print(dict_data["1"], dict_data["2"])可以使用上述方法解压缩“dict_data”,该方法是要传递给函数的键dict_data。但是,可以通过使用** 运算符来解压缩值来传递值。
dict_data = { 1: "value1", 2: "value2",}def print_date(key, value): print(key, value)print_date(**dict_data)有趣的是,如果更改 print_data 函数中参数的顺序——“def print_date(key, value)”,它仍然会起作用。
divmod 可用于以更结构化的方式设置数字格式,例如以小时和分钟显示时间。所以基本上,它用于在一个步骤中执行除法和模运算。
total_minutes = 125hours, minutes = divmod(total_minutes, 60)print(f"{hours} hours and {minutes} minutes") # o/p - 2 hours and 5 minutes给定一个列表,列出 lst = [[1], [2], [3], [4], [5]] .为了压平它,可以遵循以下旧方法
new_lst = for sublist in lst: for element in sublist: new_lst.append(element)print(new_lst)## OR using list compressionflattened_lst = [val for sublist in List1 for val in sublist]print(flattened_lst)但是,有一种技术通常用于将列表扁平化为单个列表,从而使代码简洁易读。
例如——
List1 = [[1], [2], [3], [4], [5]]flattened_lst = sum(lst, )print(flattened_lst)# O/P = [1, 4, 2, 3, 4, 5]sum(lst, ) 将所有子列表连接 lst 成一个列表。用作 求和运算的初始值,确保结果为列表。所以,它很好,但它的内存效率不高。
但是,还有另一种方法也使用 itertools.chain .此方法节省内存,因为它避免了创建中间列表,并且适用于处理大型数据集。
例如——
from itertools import chainList1 = [[1], [2], [3], [4], [5]]flattened_lst = list(chain.from_iterable(List1))print(flattened_lst)但是,我建议考虑数据的具体要求和特征,以及性能、可读性和易于实现之间的理想平衡。
Python 3.10 中引入的联合类型允许变量、函数参数和返回类型接受多种类型的值。此功能增强了代码表达力和类型安全性,使开发人员能够精确地指定在给定上下文中可接受的类型。
示例 —
from typing import Uniondef process_data(data: Union[int, float, str]) -> None: print(data)process_data(10) # Validprocess_data(3.14) # Validprocess_data("hello") # Valid来源:自由坦荡的湖泊AI