net = '192.168.1.'
host = []

for x in range(1,255):
    host.append(net+str(x))

Estoy tratando de generar una lista de IP en Python con un bucle for. ¿Hay alguna forma más simplificada de escribir esto? Por ejemplo, ¿una forma de crear la lista de hosts en línea con el bucle for, sin tener que generar previamente la lista de hosts?

0
P0LYmath 1 sep. 2014 a las 07:10

2 respuestas

La mejor respuesta

Es posible que desee utilizar una expresión generadora para esto, si tiene la intención de consumir eso exactamente una vez.

addrs = (net + str(x) for x in range(1, 255))

De lo contrario, es posible que desee algo como esto

def make_24_hosts(prefix):
    return (prefix + str(x) for x in range(1, 255))

Entonces puedes hacer algo como

>>> make_24_hosts('192.168.2.')
<generator object <genexpr> at 0x7f7b364930a0>
>>> g = make_24_hosts('192.168.2.')
>>> next(g)
'192.168.2.1'
>>> next(g)
'192.168.2.2'

O itere ese generador usando un bucle for.

3
metatoaster 1 sep. 2014 a las 03:15

Puede crear fácilmente una lista en una línea utilizando una comprensión de la lista:

net = "192.168.1."
hosts =  [ net + str(i) for i in range (1, 255)
0
Tony Suffolk 66 2 sep. 2014 a las 09:15