python 2.7 for循环来生成一个列表

我已经在Python 2.7中测试过,这两种样式是相同的。 我的困惑是,当读第一个方法来生成一个列表,我总是有点困惑,如果i%2 == 0控制,如果我们应该执行i in range(100)i%2 == 0的整个循环,或者i%2 == 0i in range(100)循环。 我有可能在过去编写Java和C ++,思考方法。

寻找如何阅读列表生成代码的建议,通常模式是[<something before loop> <the loop> <something after the loop>] ,在这种情况下,“循环前的东西”是1 ,“循环” for i in range(100)和“循环后的东西”是i%2 == 0

如果在方法1中编写代码是Python 2.7中良好的编码风格,那么还需要咨询吗? 谢谢。

a = [1 for i in range(100) if i%2 == 0]

print a

a=[]
for i in range(100):
    if i%2==0:
        a.append(1)

print a

编辑1

例如,我也想比较在显式循环中使用xrange (比较第一种列表理解的优劣)

a=[]
for i in xrange(100):
    if i%2==0:
        a.append(1)

print a

编辑2

a = [1 for i in xrange(100) if i%2 == 0]

1)正如在python 2.7中已经提到的那样,通常建议使用xrange,因为它会像C中一样只保留一个将增加的计数器。 相反,范围是真正在记忆中创建一个从0到99的整个列表! 也许在这里你必须思考,如果你需要100包括 - >那么请使用101;)

2)你明白了我的观点,问题是有效的,你必须认为操作确实会在循环中“执行”!

请记住,列表理解是非常强大的,以创造必要! 无论如何要小心,在某些情况下不容易阅读,特别是当你在像x,y等多重变量中使用时。

我会选择你的第一行,只是照顾你的阵列的最小值和最大值。 如上所述,也许你必须合并第100个元素,你可以加快使用xrange函数而不是范围。 a = [1,i在范围内(100)如果i%2 == 0]

3)一个好的建议是在xrange和while循环上记录自己 - >在stackoverflow上,你可以找到大量的讨论,寻找两个提到的操作的速度! (这只是建议)

希望这可以澄清你的查询! 祝你今天愉快!

链接地址: http://www.djcxy.com/p/69959.html

上一篇: python 2.7 for loop to generate a list

下一篇: How to convert a string to a list?