如何使用 `return` 从循环中返回多个值?我可以将它们放在列表中吗?
- 2024-11-21 08:33:00
- admin 原创
- 6
问题描述:
我有一些代码可以从名为的全局字典中打印数据cal
:
def show_todo():
for key, value in cal.items():
print(value[0], key)
但是,我想将此代码用作 Discord 机器人的一部分。为了让机器人正常工作,我需要将return
数据传送到另一个函数,该函数实际上会将消息发送到 Discord 聊天。使用print
上述方法意味着消息显示在我的本地控制台窗口中,而聊天只会看到None
。
我尝试使用return
以下方法来修复它:
def show_todo():
for key, value in cal.items():
return(value[0], key)
但是这样,for循环就不能正常工作了。我最多只能从字典中获取一个键值对。
我该如何修复此问题以便返回所有数据?
解决方案 1:
return
即使迭代尚未完成,使用循环内部也会中断它并退出该函数。
例如:
def num():
# Here there will be only one iteration
# For number == 1 => 1 % 2 = 1
# So, break the loop and return the number
for number in range(1, 10):
if number % 2:
return number
>>> num()
1
在某些情况下,我们需要在满足某些条件时中断循环。但是,在当前代码中,在完成循环之前中断循环是无意的。
除此之外,您还可以使用不同的方法:
提供数据
def show_todo():
# Create a generator
for key, value in cal.items():
yield value[0], key
你可以这样调用它:
a = list(show_todo()) # or tuple(show_todo())
或者你可以迭代它:
for v, k in show_todo(): ...
将数据放入列表或其他容器中
将数据附加到列表中,然后在循环结束后返回它:
def show_todo():
my_list = []
for key, value in cal.items():
my_list.append((value[0], key))
return my_list
或者使用列表推导:
def show_todo():
return [(value[0], key) for key, value in cal.items()]
解决方案 2:
使用生成器语法(这里有关于SO的出色解释):
def show_todo():
for key, value in cal.items():
yield value[0], key
for value, key in show_todo():
print(value, key)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD