Python IPaddress-从/30列表中查找下一个可用的/30网络?

Python IPaddress-从/30列表中查找下一个可用的/30网络?,python,ip-address,Python,Ip Address,我有一个IP地址网络列表,如下所示: 172.16.1.0/30 172.16.1.4/30 172.16.1.8/30 172.16.1.12/30 172.16.1.20/30 172.16.1.24/30 它们的创建如下所示: sr_data = SiteConfigData.objects() ls_subnets = [] for r in sr_data: if r.ip != '0.0.0.0': ls_subnets.append(ipaddress.ip_netwo

我有一个IP地址网络列表,如下所示:

172.16.1.0/30
172.16.1.4/30
172.16.1.8/30
172.16.1.12/30
172.16.1.20/30
172.16.1.24/30
它们的创建如下所示:

sr_data =  SiteConfigData.objects()

ls_subnets = []
for r in sr_data:
 if r.ip != '0.0.0.0':
  ls_subnets.append(ipaddress.ip_network(r.ip + '/30'))
我不确定如何执行此操作,但我希望有一个函数返回下一个可用的
/30
,因此第一个结果应该是
172.16.1.16/30
,然后使用后,下一个结果应该是
172.16.1.28/30

子网列表也可能不符合顺序


这可能吗?我似乎不知道我需要什么样的逻辑来实现这一点。

ip\u地址
列表就像您代码中的
ls\u子网

ip_addresses = [
    "172.16.1.0/30",
    "172.16.1.4/30",
    "172.16.1.8/30",
    "172.16.1.12/30",
    "172.16.1.20/30",
    "172.16.1.24/30",
    ] # Assuming the input is neat
used_subnets = []
for ip_address in ip_addresses:
    ip_address = ip_address.replace("/30","")
    a,b,c,d = map(int,ip_address.split('.'))
    used_subnets.append(d)
unused_subnets = ['172.16.1.%d/30'%num for num in range(0,30,4) if num not in used_subnets]

传递给此函数的参数是什么?它如何知道当前可用的,以便确定“下一步”是什么?你的问题太模糊了。