【问题标题】:Print Python deque items one at a time with all items before it一次打印一个 Python 双端队列项目及其之前的所有项目
【发布时间】:2016-01-06 08:01:42
【问题描述】:

我已经创建了双端队列 @9​​87654321@ 并在其上附加了数字 1-10,并将函数 print(h) 包含在用户定义的函数 Numbers_deque() 中。具体来说,我是这样做的:

import collections


def Numbers_deque():
    h = collections.deque()
    j = (1,2,3,4,5,6,7,8,9,10)
    h.append(j)
    print(h)

Numbers_deque()

我想知道的是,我如何打印出一次增加一个的双端队列项目,并且每次它还打印出它之前的所有项目?例如,每次调用Numbers_deque,第一次我希望它打印deque([1]),然后第二次它应该打印deque([1,2]),然后第三次它应该打印deque([1,2,3]),依此类推。我该怎么做?

【问题讨论】:

  • 拨打Numbers_deque超过10次怎么办?
  • deque 包含一个带有 10 个数字的 tuple。它真的是一个有 10 个数字的 deque 吗?您将使用h.extend 而不是h.append
  • 例如要获得deque([1,2,3]),您必须创建一个新的deque,其中仅包含123 元素
  • 这些要求很奇怪。你想达到什么目的?你需要一些状态,要么是全局的,要么是以某种方式捕获的,也许是一个生成器。可能有一种更简单的方法可以实现您真正需要的东西。全局变量通常是邪恶的,为了让生成器工作而必须跳过的圈子会产生非常复杂的代码。
  • 你为什么需要deque

标签: python function python-3.x deque


【解决方案1】:

您可以将双端队列作为默认参数启动。然后它只完成一次,并在每次调用函数时重复使用。

import collections


def Numbers_deque(h = collections.deque()):
    if len(h) >= 10:
        h.clear()
    h.append(len(h)+1)
    print(h)

Numbers_deque()

但是,如果您要返回双端队列并在函数外部使用它,请小心。那你应该复制一份

【讨论】:

  • 这行得通,但它会一次性打印出来。我想要的是它应该在每次用户调用它时打印 one 的结果,例如,如果用户在 shell 中调用 Numbers_deque 函数,或者每次某个键是按下调用函数。
  • 好的。我删除了 for 循环以使其等于相关代码
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2014-08-23
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多