从1-99打印奇数的最有效代码

时间:2014-02-15 04:31:45

标签: python

任务是在单独的行上打印1-99的奇数。

Codeeval认为此代码部分正确(100个中的98个):(已编辑)

liszt = (i for i in range(1,100) if i%2!=0)
for i in liszt:
    print i

Codeeval认为以下代码完全正确:

liszt = range(1,100)
for i in liszt:
    if i%2!=0:
        print i

Python的新手,所以只是想了解为什么一种方法可能比另一种更好。第二种方法更有效吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

在第一个代码中,您首先在两个生成器range(1, 100)上迭代,然后在liszt上迭代,而在第二个案例中,迭代仅在liszt之上。除此之外,两种情况下的操作相同,因此第二种方法更有效。

由于1之后的每个第二个数字都是奇数,因此更好的解决方案可能是:

for i in range(1, 100, 2):
    print(i)

答案 1 :(得分:0)

print("\n".join(str(i) for i in range(1,100,2)))