python list comprehension - learnpython.org

时间:2012-08-15 22:12:40

标签: python integer list-comprehension

我一直在学习learnpython.org上的教程,到目前为止,我发现一切都相对简单。

当我谈到关于列表理解的问题时,我已经陷入困境。我掌握它是如何工作的。以下是提出的问题:

  

使用列表推导,创建一个名为“newlist”的新列表   列表“数字”,仅包含来自的正数   列表,整数。

提供的代码:

numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
newlist = []

print newlist

我对这个问题的回答如下:

newlist = [x for x in numbers if x > 0]

这将从数组中返回正确的数字,但每个项目大约为15 dp。我如何得到整数而不是所有小数位。

例如,预期的答案是:

  

[34,44,68,44,12]

但是我最终得到了:

  

[34.600000000000001,44.899999999999999,68.299999999999997,44.600000000000001,12.699999999999999]

如果有人能够解释我出错的地方,那么我们将非常感激。

干杯,

杰米

1 个答案:

答案 0 :(得分:4)

newlist = [int(x) for x in numbers if x > 0]

这使得数字朝零。正数将向下舍入,负数将向上舍入。如果要舍入到最接近的整数:

newlist = [round(x) for x in numbers if x > 0]