返回[无,无,无...]的IPython Notebook中的列表理解

时间:2017-09-09 01:12:59

标签: python python-2.7 list-comprehension jupyter-notebook ipython-notebook

我希望在IPython Notebook中使用列表推导生成枚举字符串列表。它有效,但给了我一个奇怪的输出,我不明白。

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

运行单元格后,cols会返回正确的列表[Value1,Value2...Value24],但在我的笔记本中,我会收到24 None的输出列表。 Example photo

代码有效,但奇怪的输出让我觉得我做错了什么,看起来很草率。为什么我得到这个输出,有没有办法摆脱它?

3 个答案:

答案 0 :(得分:3)

您在列表中看到的None是评估函数调用cols.append('Value'+str(hour))的结果。您会看到生成的cols具有正确的条目,因为它们会被追加,但是在此列表推导方法中生成的列表实际上只包含多次评估append()的结果。

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

答案 1 :(得分:2)

cols.append(value)将值附加到cols但返回None,它不会返回带有附加值的cols,因此在您的代码之后,cols的内容为你想要,但你可以用这个做得更好:

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

答案 2 :(得分:0)

这是因为您具有列表理解功能,因此将返回“无”列表。相反,您需要添加完成后的实际列表列。为此,您要做的就是用列表理解方式替换虚拟列表的第一个元素,如下所示:

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

或简单地:

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