首页 > 解决方案 > 避免 Python 中的冗余循环

问题描述

我有两个列表(项目,销售),对于每对项目,两个列表之间的销售元素我必须调用一个函数。我正在寻找一种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)

标签: pythonloopsfor-loopitertools

解决方案


itertools.product如果将结果存储在列表中,至少可以避免第二次调用,在调用站点添加条件some_func_1

item_sales_list = list(itertools.product(items, sales))

result = some_func_1([el for el in item_sales_list if el[1] > 100])

for item, sales in item_sales_list:
    some_func_2(item, sales, result)

除非您可以传递不完整的resultto版本,否则不可能一次性完成some_func_2


推荐阅读