Модуль ipaddress содержит функцию IPv4Network, которая может использоваться для определения того, зарезервирован ли адрес IPv4, например.Как лучше всего перебирать список, когда каждый элемент списка будет передан функции?
In [25]: IPv4Address(u'100.64.1.1') in IPv4Network(u'100.64.0.0/10')
Out[25]: True
Выше всего один ряд; существует несколько диапазонов зарезервированных IP-адресов. Я хочу проверить, что данный адрес находится в любой. Длительный способ сделать это - поместить все диапазоны в список, затем перебрать по списку и повторить вышеуказанную проверку, например.
def isPrivate(ipaddress):
for range in ranges:
if ipaddress in IPv4Network(range):
print 'private'
Там, кажется, умнее способ сделать все в Python; есть ли более разумный способ сделать это, или конструкцию, о которой я не знаю?
Это немного другое поведение, так как он печатает только «private» не чаще одного раза. Я знаю, что это, вероятно, то, что нужно. –
@PeterWood, я предположил, что диапазоны не перекрывались –
Несомненно, просто отметив это. –