python和Java或C中循环迭代的区别
我正在学习python,看到了这个循环条件声明的不同,我只是有一个问题,python中的for循环与C或Java中的相同算法python和Java或C中循环迭代的区别,java,python,Java,Python,我正在学习python,看到了这个循环条件声明的不同,我只是有一个问题,python中的for循环与C或Java中的相同算法for循环有什么不同,我知道语法上的不同,但是机器执行上有什么不同,哪个更快 比如说 for i in range(0,10): if i in range(3,7): print i 在爪哇 for(int i=0,i<10;i++){ if i>=3 && i<7 system.out.
for循环
有什么不同,我知道语法上的不同,但是机器执行上有什么不同,哪个更快
比如说
for i in range(0,10):
if i in range(3,7):
print i
在爪哇
for(int i=0,i<10;i++){
if i>=3 && i<7
system.out.println(i);
for(int i=0,i=3&&i=3和i如果您使用的是python 2.x,那么range
调用将在内存中创建一个完整的列表
,保存该范围内的所有数字。这类似于用Java中的数字填充LinkedList
,并对其进行迭代
如果要避免使用列表,可以使用xrange
。它返回一个不创建临时列表的iterable
对象,该对象与您发布的Java代码等效
请注意,
中的条件并不等同于手动边界检查。Python将在O(n)中的范围内迭代以查找该项
在Python3.x中,xrange
已不复存在,range
返回一个iterable
Python2.x或Python3.x?我认为边界检查实际上比查看它是否在某个范围内更快?如果我错了,有人纠正我……你可以自己轻松地计算时间。这会很有趣。@uʍopǝpısdn那么两者都会导致t同样的性能,我指的是边界与范围。在这里发布代码时,请尝试确保它是有效的代码。如果您发布的是伪代码,请说明。我在python中测试了range(5,10)和xrange(5,10),并理解您的意思。damm我一直只使用range,对于小范围来说,这并不是一个真正的问题:)是的,但我一直在使用python进行离散优化的MOCC,对于任务,我们必须解决python中的背包之类的问题,其中测试用例包含10000个节点的数据。我也停止了在我不需要的地方使用