循环代码优化问题,请大佬解答
#循环优化import time
start = time.time()
for x in range(1000):
result = []
for m in range(10000):
result.append(x*1000+m*100)
end = time.time()
print('耗时{0}'.format(end-start))
start1 = time.time()
for x in range(1000):
result = []
c = x*1000
for m in range(10000):
result.append(c+m*100)
end1 = time.time()
print('耗时{0}'.format(end1-start1))
刚刚学完了循环,讲了一个循环代码优化,这个就是测试一下优化前与优化后的时间差距,我想问一下这个result = [] 这句为什么要放在循环里呢?这样不就是每循环一次就会生成一个空的列表了吗?但是我试了一下把result = [] 放到循环外面,发现两个循环时间基本是一致的,不是太懂,希望大佬看到后解答一下 本帖最后由 fanvalen 于 2021-6-8 14:02 编辑
这个result 在for里面每次都会重新初始变量,会使得上次的值清空,最后只有一个值
在for外面不会清空,所以有很多数据
本帖最后由 fanvalen 于 2021-6-8 14:04 编辑
fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇修改错误的解答
fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇
啥是局部和环境变量啊,还没学{:1_896:} 对于一个小白来说,,一个print真的可以行天下 但是我刚刚试了下result在外面打印出来的数是很大一堆,基本满屏了。。。但是result在循环里面,好像只有一行,不过横条也很长 看了下,你这两条代码的result = []都是放在第一个for循环里面啊。只有c赋值的位置不一样
这样下来,结果当然是一样的。
fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇
python在语句没有局部和全局之说吧,在for里for外都一样,只有函数,模块,类等才引入作用域,这和c有区别…
result要放for外… cccyyys 发表于 2021-6-8 11:16
但是我刚刚试了下result在外面打印出来的数是很大一堆,基本满屏了。。。但是result在循环里面,好像只有一 ...
你放for里面,差不多等于每循环一次就清空一次… result是列表,内部是链表实现,添加元素用时是固定的,所以每次清不清空关系不大