首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有for循环的Python3函数

带有for循环的Python3函数
EN

Stack Overflow用户
提问于 2019-09-29 05:43:45
回答 4查看 77关注 0票数 0

我正在尝试创建一个函数来迭代列表。谁能让我知道并解释我做错了什么?

代码语言:javascript
复制
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)

我正在等待输出:

代码语言:javascript
复制
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4

但是,我得到了以下输出:

代码语言:javascript
复制
1.1.1.1

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-09-29 05:59:24

你的问题是你在循环的第一次迭代时返回,然后只得到第一次迭代。试试这个:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-09-29 05:54:08

您的函数返回它在for循环的第一次迭代中遇到的值,从而导致循环立即终止。将列表的值连接在一起,并在一个字符串中返回所有值,而不是循环。

代码语言:javascript
复制
def ip_addr(addr_list):
    return "\n".join(addr_list)
票数 2
EN

Stack Overflow用户

发布于 2019-09-29 05:53:46

我不确定你想做什么,但这里有一些解决方案:

代码语言:javascript
复制
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])

或者只是

代码语言:javascript
复制
iplist = ['1.1.1.1', '2.2.2.2', '3.3.3.3', '4.4.4.4']
print('\n'.join(iplist))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58150542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档