作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数组:
[192.0.0.3, 0.0.0.0 , 192.0.10.24, ...]
对于 IP 地址,我想删除/16 网络掩码的重复项,因此我得到了 192.0.0.3,但 192.0.10.24 将被删除(我不介意其中哪一个,如果第一个也可以)一个已被删除)。
我的第一个想法是使用正则表达式来转换网络掩码并删除与随后生成的模式匹配的每个 IP 地址。
有没有更简单的方法?
最佳答案
您可以使用集合删除重复项,其中键是前两部分的元组:
>>> ips = ["192.0.0.3", "0.0.0.0", "192.0.10.24"]
>>> seen = set()
>>> for ip in ips:
... key = tuple(ip.split(".")[:2])
... if key not in seen:
... print(ip)
... seen.add(key)
...
192.0.0.3
0.0.0.0
或者使用ipaddress模块:
>>> from ipaddress import ip_network
>>> ips = ["192.0.0.3", "0.0.0.0", "192.0.10.24"]
>>> seen = set()
>>> for ip in ips:
... key = ip_network(ip + "/16", strict=False)
... if key not in seen:
... print(ip)
... seen.add(key)
...
192.0.0.3
0.0.0.0
关于python - 通过网络掩码删除重复的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700746/
我是一名优秀的程序员,十分优秀!