我正在为这个循环寻找更优雅的解决方案。我的双端队列是动态创建的,长度可能会有所不同。在下面的示例中,列表只有两个项目长,最多可以有 3 个项目长。在我的应用程序中,列表最长可达 30 项。因此,我想避免编写大量 if 语句,并在双端队列为空后停止执行代码。

from collections import deque

my_list = [ 1,2 ]
my_deque = deque ( my_list )

while my_deque:
    alpha = my_deque.popleft()
    beta = my_deque.popleft()
    gamma = my_deque.popleft()

上面的代码执行所有三个命令,在 gamma 命令上返回一个“IndexError: pop from an empty deque”。我明白为什么会发生这个错误,但想知道我是否缺少一个技巧来评估列表/双端队列在 while 循环中间是否为空(或另一种循环遍历长列表的创造性方法) .

谢谢您的帮助。

最佳答案

您可以捕获 IndexError:

try:
    while mydeque:
        alpha = mydeque.popleft()
        beta = mydeque.popleft()
        gamma = mydeque.popleft()
except IndexError:
    # handle empty mydeque

你想做什么?为什么要检查 mydeque 是否为空?

关于Python while 循环 popleft() - 错误 : Empty deque,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15153193/

10-10 19:48