尽管在for循环

时间:2018-02-03 00:42:40

标签: python for-loop

我正在编写一些代码来迭代XML,而且我遇到了一个棘手的问题。当我迭代时,我在循环中解压缩值。拆包时,我有时会遇到异常。我想知道如何继续循环,尽管例外。我知道我可以使用tryexcept解压缩循环中的值,但是我想知道是否有更优雅的方法来实现这一点,同时利用for循环解包语法。以下简短示例中的问题是由于元素太多,但我希望抓住这个和其他可能的例外。

请参阅下面的问题类似示例。

lst = [(1,2), (3,4), (5,6,7), (8,9)]
try:
    for fst, snd in lst:
        print(fst, snd)
except:
    print("exception")

输出结果如下:

1 2
3 4
exception

我想知道如何处理它,以便代码向前移动到(8,9)。谢谢!

3 个答案:

答案 0 :(得分:3)

如果元组肯定最少有两个项目,那么这似乎很简单。

for f,s,*r  in [(1,2), (3,4), (5,6,7), (8,9)]:
    print(f,s)

答案 1 :(得分:1)

有一种方法可以做到这一点,但它有点难看:

lst = iter(lst) # so it wont restart

while True:
  try:
    for fst, snd in lst:
      # stuff
    break # if the loop was successful
  except:
    pass

答案 2 :(得分:0)

您可以使用首先防止错误的列表推导:

return [ 
....
'stream' => [
    'ssl' => [
        'allow_self_signed' => true,
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
],
....
];