我有一个关于收益和收益之间的差异的问题,特别是当它们与islice结合使用时。这是我的密码:
def get_table_row():
iter_veh = get_data(fp_vehicle, vehicles_cols, Vehicles)
iter_per = get_data(fp_personal, personals_cols, Personals)
iter_emp = get_data(fp_employment, employments_cols, Employments)
iter_upd = get_data(fp_update, updates_cols, Updates)
yield from ((*v, *p, *e, *u) for v, p, e, u in zip(iter_veh, iter_per, iter_emp, iter_upd))
from itertools import islice
for row in islice(get_table_row(), 5):
print(*row)
这将从表中正确打印出5行记录。你知道吗
但是,如果我使用以下代码:
def get_table_row():
iter_veh = get_data(fp_vehicle, vehicles_cols, Vehicles)
iter_per = get_data(fp_personal, personals_cols, Personals)
iter_emp = get_data(fp_employment, employments_cols, Employments)
iter_upd = get_data(fp_update, updates_cols, Updates)
yield ((*v, *p, *e, *u) for v, p, e, u in zip(iter_veh, iter_per, iter_emp, iter_upd))
from itertools import islice
for row in islice(get_table_row(), 5):
print(*row)
这将导致打印出所有行。这里唯一的区别是收益率与收益率。我需要一个解释。谢谢!你知道吗
yield from
语句(大大简化)将yield
给定迭代器中的每个项。而yield
语句将yield
一个值。你知道吗对于这个特定的用例,您可以用以下代码行替换
yield from
:这里有一些关于
yield from
可以做什么的更多信息:In practice, what are the main uses for the new "yield from" syntax in Python 3.3?一个空的
yield
提供了它的参数。一个yield from
从它的参数提供元素。你知道吗您可以将
yield from
看作是yield
加上迭代:注意,
yield from
做的不仅仅是迭代:它在参数和调用范围之间架起了桥梁。像generator.close()
这样的信号是自动传递的,而不需要手动传播。你知道吗相关问题 更多 >
编程相关推荐