Повторное добавление строки при использовании цикла 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

Идея, лежащая в основе функции, состоит в том, чтобы взять список кортежей и список строк в качестве аргументов. Кортежи содержат отображение реальных адресов на сопоставленные адреса. Если сопоставленный адрес найден в строке списка, он заменяется реальным адресом.

Последняя строка в списке строк добавляется дважды в новый список, который я создаю. Когда я перехожу через функцию добавления операторов печати, похоже, что последний кортеж в списке оценивается дважды.

Я мог бы обойти проблему, добавив еще одно выражение if в предложение else, но я бы хотел понять, в чем я ошибаюсь. Любая помощь с благодарностью!

1 ответ

Ошибка пользователя Я использовал предыдущую функцию для генерации ввода для этой функции. Свободно определяемое регулярное выражение, плюс имя ACL, которое было подмножеством других имен ACL, вызвало дублирование вывода.

Другие вопросы по тегам