python - 避免 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)
解决方案
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)
除非您可以传递不完整的result
to版本,否则不可能一次性完成some_func_2
。
推荐阅读
- php - 我无法在使用 PHP 的 Excel 电子表格上显示“11e5”
- docker - 不健康服务的 Docker 覆盖网络 dns 别名
- php - php数据库空数组
- installation - InstallForge,从当前目录运行第三方exe?
- json - 使用基本身份验证(Json)在帖子网址中添加用户名和密码
- scikit-learn - Keras 适合具有 2 个或更多输出类的分类器,必须指定度量标签
- azure - EventGrid 性能
- windows - 从多个 Git 存储库中提取并构建的脚本(Maven 项目)
- reactjs - 使用值属性时,输入字段在反应中不可点击
- excel - 使用方法:不为空时求和