Python与Java或C中循环迭代的差异
我正在学习Python,看到这个循环条件的声明有些不同,我有个问题,就是Python中的for循环和C或Java中的同样算法的for循环
到底有什么不同。我知道语法上有区别,但在机器执行上有没有差别,哪个更快呢?
for i in range(0,10):
if i in range(3,7):
print i
在Java中的例子是
for(int i=0,i<10;i++){
if i>=3 && i<7
system.out.println(i);
我想了解的是关于'i'
的实际迭代过程,而不是打印语句或代码的输出结果。
另外,关于用来检查'i'
是否在3和7之间的if
条件也想请教一下。如果在Python中我用类似的语句if i>=3 and i <7:
,那会有什么不同呢?
我使用的是Python 2.7
1 个回答
3
如果你在使用 Python 2.x 版本,那么调用 range
会在内存中创建一个完整的 list
,里面存放了这个范围内的所有数字。这就像在 Java 中用数字填充一个 LinkedList
,然后遍历它。
如果你想避免创建这个列表,可以使用 xrange
。它会返回一个 iterable
对象,不会生成临时的列表,这样就和你发的 Java 代码效果一样。
需要注意的是,使用 in
条件并不等同于手动检查范围的边界。Python 会以 O(n) 的时间复杂度遍历这个范围来查找你要找的项目。
在 Python 3.x 版本中,xrange
不再存在,而 range
直接返回一个 iterable
对象。