Python中for循环中的几点注意事项

for循环在Python中有几点要注意的地方

一:大小循环问题,小循环在外,大循环在内

>>> import time
>>> total = 1
>>> time1 = time.time()
>>> for i in range(10):
...     for j in range(10000000):
...         total *= i + j
>>> time2 = time.time()
>>> print(time2 - time1)
168.1079998016

vs

>>> import time
>>> total = 1
>>> time3 = time.time()
>>> for i in range(1000000):
...     for j in range(10):
...         total *= i + j
>>> time4 = time.time()
>>> print(time4 - time3)
186.583000183

上面两种情形,同样遍历两次for循环,第一种方式无论耗时,性能都要比第二种好的多。 原因就是第二种方式,CPU要不停的切换,切换是需要耗时的,而且第二种方式从美观来说,是不如第一种。 

二:在循环的时候,最好使用xrange来替代range

range()函数再遍历的时候会一次性列表都获取出来,xrange()会一个个获取,如果数据量小时,区别很小,如果数据量特别大时,差别会很大!

import time

total = 1
time1 = time.time()
for i in xrange(10):
    for j in xrange(100000000):
        total *= i + j
time2 = time.time()
print(time2 - time1)
>>> # 使用xrange函数耗时: 125秒
125.180000067

vs

import time

total = 1
time1 = time.time()
for i in range(10):
    for j in range(100000000):
        total *= i + j
time2 = time.time()
print(time2 - time1)
>>> # 使用range函数耗时: 167秒
167.417999983

同样的条件,使用xrange函数无疑比range快些,数据量越大,会越明显!

三:如果for循环有条件判断,可以将条件放到for循环外

上面的这一条主要的安装Python的代码规范来说的。按照PEP8的规范无疑更推荐这种:

>>> if OS_TYPE = "win32":
>>>     for i in range(len(ONE_VAR)):
>>>         ......
>>> else:
>>>     for j in range(len(TWO_VAR)):
>>>         ......

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值