带有for循环的Python3函数

时间:2019-09-28 21:43:44

标签: python python-3.x

我正在尝试使函数遍历列表。谁能告诉我并解释我做错了什么?

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)

我期望输出:

1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4

但是,我得到以下输出:

1.1.1.1

谢谢

4 个答案:

答案 0 :(得分:2)

您的函数返回它在for循环的第一次迭代中遇到的值,从而导致循环立即终止。代替循环,将列表的值连接在一起,然后将它们全部返回到一个字符串中。

def ip_addr(addr_list):
    return "\n".join(addr_list)

答案 1 :(得分:0)

我不确定您要做什么,但这是一些解决方案:

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])

或者只是

iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']
print('\n'.join(iplist))

答案 2 :(得分:0)

您的问题是您在循环的第一次迭代中返回,然后仅获得第一次迭代。 尝试:

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)

答案 3 :(得分:-1)

在所有有效答案之上,您还可以使用一个空的空白列表,并将其附加在值内并返回该虚拟列表。