【发布时间】:2016-02-04 10:00:09
【问题描述】:
我正在计算一个简单的推荐系统。在我最近的邻居方程中,我试图返回列表 all_combinations 以便对其进行排序。
在函数内打印列表时,所有值都会在程序运行时出现。但是,返回值(排序列表)不会出现。
只出现一个值,更奇怪的是每次运行程序时这个值都会发生变化。
它返回列表中的任何一个值。
这里发生了什么?我尝试将 return 语句移动到不同的选项卡级别,并且它不会改变它的操作方式。
代码:
#find the nearest neighbor
def nearestNeighborManhattan(username,users):
distances = 0
all_combinations = []
for name in users:
if name != username:
distances = sum_manhattan(users[username],users[name])
all_combinations.append(distances)
print(all_combinations)
neat = all_combinations.sort()
return neat
print(nearestNeighborManhattan("Veronica",users))
return 被注释掉时的输出是这样的:
[3.5]
[3.5, 8.5]
[3.5, 8.5, 4.0]
[3.5, 4.0, 8.5, 4.0]
[3.5, 4.0, 4.0, 8.5, 6.5]
[3.5, 4.0, 4.0, 6.5, 8.5, 4.0]
[3.5, 4.0, 4.0, 4.0, 6.5, 8.5, 2.0]
return 语句未注释掉且 print 语句未注释掉时的值在每次程序运行时都会更改为列表中的数字之一。我上次运行它是 8.5,只有 8.5。该列表根本不打印。
附:在函数“Veronica”之外的打印语句中只是我正在使用的字典中的用户。
【问题讨论】:
-
我认为返回的整洁应该与for循环一致,因此您可以遍历所有日期然后返回
标签: python list sorting return