【问题标题】:Returning a sorted list within function....only returns one value when list is printed all values displayed在函数内返回一个排序列表....打印列表时只返回一个值显示所有值
【发布时间】: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


【解决方案1】:

neat = all_combinations.sort()neat 设置为None,因为sort 就地排序(并返回None)。

如果您希望neatall_combinations 的排序版本,请使用neat = sorted(all_combinations)

【讨论】:

  • 执行此操作并将返回移动到 for 循环有效,谢谢!
猜你喜欢
  • 2022-07-04
  • 2022-06-15
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
相关资源
最近更新 更多