Estoy tratando de hacer una función para iterar sobre la lista. ¿Alguien puede hacerme saber y explicar que es lo que estoy haciendo mal?

iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']

def ip_addr(addr_list):
    for ip_addresses in addr_list:
        return ip_addresses


test = ip_addr(iplist)

print(test)

Estoy esperando salida:

1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4

Sin embargo, obtengo el siguiente resultado:

1.1.1.1

Gracias

0
Sherry 29 sep. 2019 a las 00:43

4 respuestas

La mejor respuesta

Su problema es que regresa en la primera iteración del ciclo, luego obtiene solo la primera iteración. Trata eso:

iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']

def ip_addr(addr_list):
    addresses = ""
    for ip_addresses in addr_list:
        addresses += ip_addresses + "\n"
    return addresses  

test = ip_addr(iplist)
print(test)
0
Timothée Dautrême 28 sep. 2019 a las 21:59

Su función devuelve el valor que encuentra en la primera iteración del ciclo for, lo que hace que el ciclo finalice de inmediato. En lugar de un bucle, unir los valores de la lista y devolverlos todos en una cadena.

def ip_addr(addr_list):
    return "\n".join(addr_list)
2
Bill the Lizard 28 sep. 2019 a las 21:54

No estoy seguro de lo que está tratando de hacer, pero aquí hay algunas soluciones:

iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']

def ip_addr(addr_list):
    for ip_addresses in addr_list:
        yield ip_addresses


test = ip_addr(iplist)

print(*[ip for ip in test])

O solo

iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']
print('\n'.join(iplist))
0
phylogram 28 sep. 2019 a las 21:53

Por encima de todas las respuestas válidas, también puede usar una lista vacía ficticia y agregar dentro de los valores y devolver esa lista ficticia también.

-1
Physicing 28 sep. 2019 a las 22:00
58150542