列表理解ipython笔记本返回[无,无,无..]



我希望使用ipython笔记本中的列表理解来生成枚举字符串列表。它有效,但给了我一个奇怪的输出,我不明白。

cols = []
[cols.append('Value'+str(hour)) for hour in xrange(1,25)]

运行单元格后,cols返回正确的列表[Value1,Value2...Value24],但是在我的笔记本中,我收到了24 None的输出列表。示例照片

代码有效,但是奇怪的输出使我觉得自己做错了,看起来很草率。为什么我要获得此输出,有什么方法可以摆脱它?

您在列表中看到的None S是评估函数调用cols.append('Value'+str(hour))的结果。您会看到带有正确条目的结果cols,因为它们会附加,但是在此列表中生成的列表理解方法实际上仅由评估append()的结果多次组成。

尝试cols = ['Value'+str(hour) for hour in xrange(1,25)]

cols.append(value)将值附加到 cols,但返回 None,它不会带有附加值返回 cols,因此,在代码后,COLS具有您想要的内容,但是您可以做到这一点这样做更好:

cols = ['Value'+str(hour) for hour in xrange(1,25)]

这是因为您拥有的列表理解将返回无列表。取而代之的是,您希望在添加后完成实际列表COLS。为此,您所要做的就是用您的列表理解替换虚拟列表的第一个元素:

[[cols.append('Value'+str(hour)) for hour in xrange(1,25)], cols][1]

或简单:

[('value'+str(x)) for x in xrange(1,25)]

最新更新