使用for-else循环时重复添加行

时间:2016-05-31 16:53:58

标签: python tuples for-else

我有一个功能

def static_nat_fwsm_check(mapped_to_real_address_pairs,FWSM_ACLs):
  amended_static_nat_acl=[]
  for acl_line in FWSM_ACLs:
    for i,j in mapped_to_real_address_pairs:
      if j in acl_line:
        amended_static_nat_acl.append('!STATIC NAT SUBSTITUTION FOR '+acl_line)
        amended_static_nat_acl.append(re.sub(j,i,acl_line))
        break
    else:
      amended_static_nat_acl.append(acl_line)
  return amended_static_nat_acl

该函数背后的想法是将元组列表和字符串列表作为参数。元组包含实地址到映射地址的映射。如果在列表中的字符串中找到映射的地址,则将其替换为实际地址

字符串列表中的最后一行被添加到我正在创建的新列表中两次。当我逐步执行添加print语句的函数时,看起来列表中的最后一个元组被评估两次。

我可以通过在else子句中添加另一个if语句来回避这个问题,但我想知道我哪里出错了。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

用户错误。我使用前一个函数为此函数生成输入。松散定义的正则表达式加上作为其他ACL名称子集的ACL名称导致重复输出。