擅长:python、mysql、java
<p>您应该将ip/子网列表解析为一个dict,其中ip作为键,一组子网作为值。然后迭代密钥,找到子网集合上的最小值,并将计算仅应用于该ip/子网。你知道吗</p>
<p>像这样:</p>
<pre><code>import collections
ip_subnet_list=['1.0.0.0/31', '1.0.0.0/30', '5.0.0.0/22']
data = collections.defaultdict(set)
for item in ip_subnet_list:
ip, subnet = item.split('/')
data[ip].add(int(subnet))
ip_count = 0
for ip, subnets in data.iteritems():
subnet = min(subnets)
ip_count += pow(2, 32 - subnet)
print ip_count
</code></pre>