Python 如何从一个函数返回多个列表,并保留它们的名称?

Python 如何从一个函数返回多个列表,并保留它们的名称?,python,list,return,Python,List,Return,我有一个创建多个列表的函数,我想用函数中使用的相同名称将它们返回到代码的主体 下面的示例返回一个连接列表,然后通过切片连接列表重新创建各个列表(使用与函数中使用的相同名称) def my_函数(): #一些生成多个列表的代码 我的_列表_1=[1,2,3] 我的清单2=['a','b','c'] return[我的清单1,我的清单2] temp=我的_函数() my_list_1=临时[0] 我的清单2=临时工[1] 打印(我的列表1) 打印(我的清单2) 这种方法看起来“笨重”(完整的函数会

我有一个创建多个列表的函数,我想用函数中使用的相同名称将它们返回到代码的主体

下面的示例返回一个连接列表,然后通过切片连接列表重新创建各个列表(使用与函数中使用的相同名称)

def my_函数():
#一些生成多个列表的代码
我的_列表_1=[1,2,3]
我的清单2=['a','b','c']
return[我的清单1,我的清单2]
temp=我的_函数()
my_list_1=临时[0]
我的清单2=临时工[1]
打印(我的列表1)
打印(我的清单2)
这种方法看起来“笨重”(完整的函数会创建大约30个列表),但我还没有找到更有效的方法。有吗


自学python,这是我的第一篇博文,所以请放轻松:)。谢谢

这是最具python风格的方式:

my_list_1, my_list_2 = my_function()

查看*args和**kwargs 如果函数返回[list1,list2] 您可以重构代码,以便


list1,list2=*my_function()等等

首先,您不必返回列表
返回[my_list_1,my_list_2]
,只需
返回my_list_1,my_list_2
。这将返回列表的元组,这是返回多个内容的更好方法(更合适)

为什么不直接使用
temp
变量访问列表,而不是创建
my\u list\u 1
my\u list\u 2
变量?也就是说,如果需要,可以将函数调用为
my\u list\u 1,my\u list\u 2=your\u function()

另一种方法是返回dict:
return{'my_list_1':my_list_1,'my_list_2':my_list_2}
然后,您可以执行以下代码段(但当键非常异构且不是像my_list_N那样的枚举时,它很有用,在这种情况下索引就足够了)


如果你的函数返回了很多结果,你应该考虑使用<代码>命名元组< /代码>

从集合导入namedtuple
def my_函数():
Results=namedtuple('Results'、['my_list_1'、'my_list_2']))
我的_列表_1=[1,2,3]
我的清单2=['a','b','c']
返回结果(我的列表1、我的列表2)
然后可以通过字段名访问结果

>>结果=我的函数()
>>>results.my_list_1
[1, 2, 3]
>>>results.my_list_2
['a','b','c']

查看命名元组

为什么需要它们作为
my_list1=temp[0];my_list2=temp[1]
?在那之后,你打算如何处理我的清单1,
我的清单2
?这里的重点是什么?如果一个函数返回一个包含30个列表的列表,那么您需要将这30个子列表存储到另外30个列表变量中吗?
返回my_list1,my_list2
,并将其称为
my_list_1,my_list_2=my_函数()
han solo-列表中的数据将受到各种其他功能等的影响。我希望保留它们的原始名称,因为它们高度描述了其中的内容,以帮助我跟踪它们在代码其余部分的使用情况。对象没有名称。变量有名称,但不能传递变量。列表是对象;它们从来没有名字,你也不能让Python自动将名字与列表一起带来。谢谢,“my_list_1,my_list_2=my_function()”方法工作得很好,但仍然需要在函数之外再次“重复”所有字段名。
returned_lists = your_function()
print(returned_lists['my_list_1'])
print(returned_lists['my_list_2'])