Проблема:
Есть 2 списка, один считается родительским, а другой дочерним. То, что я хочу сделать, это построить третий список на основе условия.
Текущее решение:
from netaddr import *
l1 = ['10.0.0.0/8', '172.16.0.0/16']
l2 =['10.10.10.10','172.16.15.0/24','10.20.10.0/24','13.1.1.0/24','15.10.10.0/24','172.16.16.0/25','10.10.11.11']
[ip1 for ip1 in l1 for ip2 in l2 if IPNetwork(ip2) in IPNetwork(ip1)]
Выход:
['10.0.0.0/8', '10.0.0.0/8', '10.0.0.0/8', '172.16.0.0/16', '172.16.0.0/16']
Приведенное выше понимание, на мой взгляд, не является оптимальным решением
Я ищу , чтобы найти способ, с помощью которого я мог бы повторно реализовать вышеупомянутое решение с дополнительным преимуществом удаления элементов (см. Ip2), которые сопоставляются с l2 в каждой итерации, таким образом, избегайте перепроверки эти элементы снова в следующей итерации