我在 Python Jupyter 中有以下代码:
n = 10**7
d = {}
%timeit for i in range(n): d[i] = i
%timeit for i in range(n): _ = d[i]
%timeit d[10]
Run Code Online (Sandbox Code Playgroud)
以下时间:
763 ms ± 19.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
692 ms ± 3.74 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
39.5 ns ± 0.186 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) …Run Code Online (Sandbox Code Playgroud) 在以下代码段中,我创建了一个 Counter 对象,并尝试使用三种方式将其添加到自身中。使用“+”的标准加法,从列表中减少(内部与前面相同)并使用列表中的函数 sum()。
前 2 个工作并返回预期结果,但第三个引发 TypeError 异常。
从这里我有两个问题:
Counter 只是一个例子,当我创建新类时,我对一般情况感兴趣,而不是对这个特别感兴趣。
from collections import Counter
from functools import reduce
a = Counter([1,1,1,1])
print(a+a+a)
print(reduce(lambda x, y: x + y, [a,a, a]))
sum([a, a, a])
Run Code Online (Sandbox Code Playgroud)
印刷:
Counter({1: 12})
Counter({1: 12})
Traceback (most recent call last):
File "/home/user/.PyCharmCE2019.3/config/scratches/scratch.py", line 20, in <module>
print(sum([a, a,]))
TypeError: unsupported operand type(s) for +: 'int' and 'Counter'
Run Code Online (Sandbox Code Playgroud)