0

这是我的代码

[temp.append(i.get_hot_post(3)) for i in node_list]
[hot_posts+i.sort(key=sort_by_rate) for i in temp ]

get_hot_posts() 以这种方式返回 3 个项目的列表

return recent_posts[0:amount-1]

可能是列表短于 3 个元素,它可能会弄乱周围的东西,但继续

[temp.append(i.get_hot_post(3)) for i in node_list]

在这个命令之后,在“temp”中我有一个列表列表,这很好。

但是当它执行时

[hot_posts+i.sort(key=sort_by_rate) for i in temp ]

它给出了这个错误

TypeError: can only concatenate list (not "NoneType") to list
4

2 回答 2

4

List 方法sort返回None(只是更改列表)。您可以改用sorted()函数。

PS。

[temp.append(i.get_hot_post(3)) for i in node_list]

这不是一个好主意,因为您将有一个None. 可能的变体:

temp += [i.get_hot_post(3) for i in node_list]

甚至

from operator import methodcaller 
temp += map(methodcaller(get_hot_post, 3), node_list)
于 2012-08-22T19:42:32.267 回答
3

我想你的意思是sorted(i),不是吗?i.sort()进行就地排序并且不返回任何内容。

另外,你为什么想做[hot_posts + ...]?这不会将值存储在 hot_posts 中,因此该操作没有意义,除非您将结果分配给新变量。

我怀疑你想做类似的事情

temp = [i.get_hot_post(3) for i in node_list]
hot_posts = [sorted(i, key=sort_by_rate) for i in temp]

虽然我不知道你的最后一行应该做什么。现在它只是对这些三个小列表中的每一个进行排序,仅此而已。

于 2012-08-22T19:35:58.637 回答