4

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

当我遇到关于列表理解的问题时,我陷入了困境。我知道它是如何工作的。下面是被问到的问题:

使用列表推导,从列表“numbers”中创建一个名为“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]

如果有人能够阐明我哪里出错了,那将不胜感激。

干杯,

杰米

4

1 回答 1

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

这会将数字四舍五入为零。正数将向下舍入,负数将向上舍入。如果要四舍五入到最接近的整数:

newlist = [round(x) for x in numbers if x > 0]
于 2012-08-15T22:14:34.930 回答