【发布时间】:2019-07-31 17:12:53
【问题描述】:
我有两个列表(项目,销售),对于每对项目,两个列表之间的销售元素我必须调用一个函数。我正在寻找一种pythonic方法来避免这种冗余循环
第一个循环:
# Create item_sales_list
item_sales_list = list()
for item,sales in itertools.product(items,sales):
if sales > 100:
item_sales_list.append([item,sales])
result = some_func_1(item_sales_list)
第二次循环:
# Call a function with the result returned from first function (some_func_1)
for item,sales in itertools.product(items,sales):
some_func_2(item,sales,result)
【问题讨论】:
-
问题是对第一个循环完成后已知的结果存在依赖性。关于 some_func_2 做什么的任何见解?你能为 some_func_1 制定一个增量解决方案并将其与 some_func_2 相关联吗?
-
这完全取决于 some_func_2 中如何需要结果。如果需要首先获得完整的结果,那么您无法在一个循环中完成。
-
您能做的最好的事情就是将第一个 for 循环更改为列表理解。
-
你甚至不需要理解:
item_sales_list = list(product(items, sales)). -
btw:
result = some_func_1(itertools.product(items,sales))你可以简化你的第一个循环
标签: python loops for-loop itertools