任务是在单独的行上打印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的新手,所以只是想了解为什么一种方法可能比另一种更好。第二种方法更有效吗?
感谢您的帮助!
答案 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)))