cccyyys 发表于 2021-6-8 11:01

循环代码优化问题,请大佬解答

#循环优化
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 11:07

本帖最后由 fanvalen 于 2021-6-8 14:02 编辑

这个result 在for里面每次都会重新初始变量,会使得上次的值清空,最后只有一个值
在for外面不会清空,所以有很多数据

fanvalen 发表于 2021-6-8 11:13

本帖最后由 fanvalen 于 2021-6-8 14:04 编辑

fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇修改错误的解答

cccyyys 发表于 2021-6-8 11:14

fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇

啥是局部和环境变量啊,还没学{:1_896:}

GiaoMan-wei 发表于 2021-6-8 11:15

对于一个小白来说,,一个print真的可以行天下

cccyyys 发表于 2021-6-8 11:16

但是我刚刚试了下result在外面打印出来的数是很大一堆,基本满屏了。。。但是result在循环里面,好像只有一行,不过横条也很长

小能维尼 发表于 2021-6-8 12:30

看了下,你这两条代码的result = []都是放在第一个for循环里面啊。只有c赋值的位置不一样
这样下来,结果当然是一样的。

无闻无问 发表于 2021-6-8 12:35

fanvalen 发表于 2021-6-8 11:07
这个result 在for里面就是局部变量,在外面就是全局变量,
局部的时候你在外面print一下看看有没有哇

python在语句没有局部和全局之说吧,在for里for外都一样,只有函数,模块,类等才引入作用域,这和c有区别…

result要放for外…

无闻无问 发表于 2021-6-8 12:37

cccyyys 发表于 2021-6-8 11:16
但是我刚刚试了下result在外面打印出来的数是很大一堆,基本满屏了。。。但是result在循环里面,好像只有一 ...

你放for里面,差不多等于每循环一次就清空一次…

woaiwinnie2 发表于 2021-6-8 13:04

result是列表,内部是链表实现,添加元素用时是固定的,所以每次清不清空关系不大
页: [1] 2 3
查看完整版本: 循环代码优化问题,请大佬解答