作者Lucemia (生の直感、死の予感)
看板Python
标题Re: [问题] List扩编的处理速度...
时间Sat Apr 25 03:15:38 2009
:
: 如果修改line 6为「list += [i]」 或「list = list + [i]」
: 测试出来的时间会有差异
:
: 我实际用做1000000次去测试list扩编的速度
:
: 使用 list.append(i) 约为0.24秒
: 使用 list += [i] 约为0.35秒
: 使用 list = list + [i] 约为49.7秒
:
:
: 很明显的list = list + [i]的速度慢很多
: "There should be one-- and preferably only one --obvious way to do it."
: 既然如此 为何Python还要允许存在这种扩编list的方式呢?有其他时机会用上吗?
:
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 140.129.59.68
: → Lucemia:[] + [1] 是产生新的 list, 不影响原list 04/24 07:23
: → Lucemia:list.append 是直接对原list 做动作 两者语意上就不同 04/24 07:24
: → leondemon:不过.append比+=还要快 那似乎+=就没意义了(懒人语法?) 04/25 00:21
append 与 += 意义上完全就不一样
x += [1,2,3] 是 x = x + [1,2,3] 的简写
和append 比一开始就少了一个 list 生成([1,2,3])的 overhead
要比较也是与 list.extend
: 推 sbrhsieh:list += [i] 多一个成本在 [i] 这个 list construction 04/25 00:44
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 154.20.36.163
※ 编辑: Lucemia 来自: 154.20.36.163 (04/25 03:19)
※ 编辑: Lucemia 来自: 154.20.36.163 (04/25 03:23)
1F:推 leondemon:谢谢指教 但 x += [1,2,3] 应该比x = x + [1,2,3]快很多 04/25 03:51
2F:→ leondemon:所以似乎不能说是简写 04/25 03:53
3F:推 leondemon:速度上是list.append(i) > list+=[i] >>> list=list+[i] 04/25 03:56
4F:→ leondemon:这样看来list += [i] 似乎除了coding方便外 较无用处 04/25 03:57
5F:→ leondemon:而且我第二篇测试 先复制list再append也比list去加快 04/25 04:00
6F:推 leondemon:所以用加法去合并扩建list 似乎不是好方法 04/25 04:03
7F:→ leondemon:不过好处的话 是阅读和coding方便 :) 04/25 04:04
8F:推 godfat:语意不同不能这样比吧? :( 04/25 04:46