Python deque maxlen 不显示
Python deque maxlen does not show
我有
from collections import deque
dq = deque(range(10), maxlen = 10)
dq
dq.extendleft([10, 20, 30, 40])
dq
结果
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8])
但是在 Fluent Python (2019) 一书中,我看到了 maxlen,像这样
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8], maxlen=10)
是不是版本不同导致的不同?
这似乎是由 IPython 引起的。如果您执行 print(dq)
或 print(repr(dq))
,您将获得预期的输出,并且在正常的 REPL 中也是如此。
In [1]: from collections import deque
In [2]: dq = deque(range(10), maxlen=10)
In [3]: dq
Out[3]: deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [4]: print(dq)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
In [5]: print(repr(dq))
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> from collections import deque
>>> dq = deque(range(10), maxlen=10)
>>> dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
更新:I've submitted a PR to IPython 解决问题。
我有
from collections import deque
dq = deque(range(10), maxlen = 10)
dq
dq.extendleft([10, 20, 30, 40])
dq
结果
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8])
但是在 Fluent Python (2019) 一书中,我看到了 maxlen,像这样
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8], maxlen=10)
是不是版本不同导致的不同?
这似乎是由 IPython 引起的。如果您执行 print(dq)
或 print(repr(dq))
,您将获得预期的输出,并且在正常的 REPL 中也是如此。
In [1]: from collections import deque
In [2]: dq = deque(range(10), maxlen=10)
In [3]: dq
Out[3]: deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [4]: print(dq)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
In [5]: print(repr(dq))
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> from collections import deque
>>> dq = deque(range(10), maxlen=10)
>>> dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
更新:I've submitted a PR to IPython 解决问题。