Python与Java或C中循环迭代的差异

2 投票
1 回答
2179 浏览
提问于 2025-04-18 00:17

我正在学习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 对象。

撰写回答