<p>我正在编写一个Euler问题,我遇到了一个激发我好奇心的问题。我有两段代码。一个是用列表,另一个用字典。</p>
<p><strong>使用列表:</p>
<pre><code>n=100000
num=[]
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(tmp)
suma+=i
</code></pre>
<p><strong>使用词典:</p>
<pre><code>n=100000
num={}
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num[tmp]=i
suma+=i
</code></pre>
<p>我只关心表演。为什么使用字典的第二个示例运行得非常快,比第一个使用列表的示例运行得更快。字典的例子快了将近30倍!</p>
<p>我用n=1000000测试了这两个代码,第一个代码在1032秒内运行,第二个代码在3.3秒内运行,,,amazin'!</p>