首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表理解、列表列表和列表连接

列表理解、列表列表和列表连接
EN

Stack Overflow用户
提问于 2012-08-23 03:33:16
回答 2查看 1.3K关注 0票数 0

这是我的代码

代码语言:javascript
复制
[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个项目的列表

代码语言:javascript
复制
return recent_posts[0:amount-1]

可能是列表少于3个元素,它可能会把事情搞乱,但还会继续

代码语言:javascript
复制
[temp.append(i.get_hot_post(3)) for i in node_list]

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

但是当它执行的时候

代码语言:javascript
复制
[hot_posts+i.sort(key=sort_by_rate) for i in temp ]

它会给出这个错误

代码语言:javascript
复制
TypeError: can only concatenate list (not "NoneType") to list
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-23 03:35:59

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

还有,为什么你想做hot_posts + ...?这不会将值存储在hot_posts中,因此该操作没有意义,除非将结果赋给一个新变量。

我怀疑你想做像这样的事情

代码语言:javascript
复制
temp = [i.get_hot_post(3) for i in node_list]
hot_posts = [sorted(i, key=sort_by_rate) for i in temp]

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

票数 3
EN

Stack Overflow用户

发布于 2012-08-23 03:42:32

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

PS。

代码语言:javascript
复制
[temp.append(i.get_hot_post(3)) for i in node_list]

这不是一个好主意,因为你会有一个None的列表。可能的变体:

代码语言:javascript
复制
temp += [i.get_hot_post(3) for i in node_list]

甚至是

代码语言:javascript
复制
from operator import methodcaller 
temp += map(methodcaller(get_hot_post, 3), node_list)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12080169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档