python - 每次迭代后清空列表
问题描述
我是 Python 新手。我有以下代码片段:
kf = KFold(n_splits=5)
averaged_precision_for_t_knn = []
averaged_recall_for_t_knn = []
for t in range(1,6,1):
print(t)
averaged_precision = []
averaged_recall = []
for trainset, testset in kf.split(data):
algo.fit(trainset)
predictions = algo.test(testset)
precision, recall = compute_precision_recall(predictions, t, 4)
# average over all users
averaged_precision.append(sum(precision for precision in precision.values()) / len(precision))
averaged_recall.append(sum(recall for recall in recall.values()) / len(recall))
print(averaged_precision)
print(averaged_recall)
averaged_precision_for_t_knn.append(np.mean(averaged_precision))
averaged_recall_for_t_knn.append(np.mean(averaged_recall))
如果我将这两个列表放在外循环中:
averaged_precision = []
averaged_recall = []
我明白了:
如果我将这两个列表放在外循环中:
averaged_precision = []
averaged_recall = []
我明白了:
当我将这两个列表放在外循环中时,它们在每次迭代后都将自己清空。而如果我将它们放在外循环之外,它们会继续添加值。这是为什么?
解决方案
当列表分配在外部循环之外(之前)时,它们仅在循环执行开始时设置为空。因此,添加任一列表的每个值在所有迭代中都保留在那里。
当列表分配在外循环内时,每次外循环迭代时它们都设置为空。因此,添加到其中一个列表的每个值仅保留到下一次迭代清除列表。
推荐阅读
- javascript - 淘汰赛:表选择取消选择行。取消选择行的问题/挑战
- c# - MVVM - 附加属性 selectionstart,文本框中的 selectionlength
- c - fread 不会读取整个文件
- asp.net - 会话到期 VB.NET 1 天
- java - 如何在 Java 中使用 Button 处理复选框?
- android - Android retrofit2.BuiltInConverters$RequestBodyConverter 错误
- python - 自定义 Flask 应用的记录器名称
- php - 有时 JSON 结果会无缘无故地返回 null
- javascript - 禁用提交按钮后表单未提交
- javascript - 使用纯javascript删除货币符号并用点替换逗号