python - 如何(不)重复具有简单迭代变化的代码行?
问题描述
我正在检查不同类别的一些平均值
cat_1 = []
for i, j, k in zip(is, js, ks):
if i == 1:
cat_1.append(i)
avg_cat_1 = stats.mean(cat_1)
print("Avg for cat_1:", avg_cat_1)
如果我想包含多个类别,我想避免为每个新类别写一个新行。
对于列表的初始化,我可以这样做:
for i in range(nr of categories):
a = "cat_%s" % (i)
print (a)
但这当然只会打印我一行并且不执行一个并且对于 if 语句来说更加复杂。
我想知道是否有办法只做这样的循环:
for i in range(nr of categories):
cat_i = []
或者
for i in range(nr of categories):
cat_%s = [] %(i)
其中“i”不是被识别为变量字符串的一部分,而是被识别为临时循环变量,并且只生成可执行的代码行,而不仅仅是打印输出
解决方案
有一种按名称查找变量的方法。说全局变量:
globals()[f'cat_{i}'] = 9
但这是令人费解的。鉴于信息有限,您的用例是列表列表的教科书用例:
for i in range(num_of_categories):
cat[i].append(some_operation(i))
推荐阅读
- jquery - 如何将数据从html发送到节点js?
- ios - 使用传输器上传到应用商店连接时出错
- wordpress - Wordpress - 如何为浅色和深色主题提供 2 种编辑器样式?ACF 专业版和 add_editor_styles()
- node.js - 如何访问 Mongo db 中变量的值以定义为键?
- c# - Visual Studio Ctrl+F5 一段时间后停止工作,如何延长持续时间?
- angular - Angular 9 Mat-select 显示期间值的逗号分隔
- excel - 比较 2 个工作表中的所有单元格
- typescript - 如何在打字稿中对 Lambda 函数的 DynamoDb 扫描结果进行分页?
- excel - 如何使文本在excel下拉列表中显示为其他内容
- html - HTML 是否在显示器之间切换