将多个列表作为参数而不是在dict中返回它们,有没有更好的方法(python3)?
我有一个函数,需要返回在Python3.x中函数内部创建的两个列表。与其返回列表,不如将这两个列表作为参数,并在这些列表中附加我需要的任何信息。我的另一种方法是返回一个包含2个列表的字典,然后在函数返回后使用键获取列表。这两种方法都需要在函数调用之前/之后进行准备,所以我只是想知道是否有更好的方法返回列表,如果没有,这两种方法中哪一种更好 示例代码:将多个列表作为参数而不是在dict中返回它们,有没有更好的方法(python3)?,python,list,python-3.x,dictionary,Python,List,Python 3.x,Dictionary,我有一个函数,需要返回在Python3.x中函数内部创建的两个列表。与其返回列表,不如将这两个列表作为参数,并在这些列表中附加我需要的任何信息。我的另一种方法是返回一个包含2个列表的字典,然后在函数返回后使用键获取列表。这两种方法都需要在函数调用之前/之后进行准备,所以我只是想知道是否有更好的方法返回列表,如果没有,这两种方法中哪一种更好 示例代码: def method1(list1, list2): *do something to lists* def method2():
def method1(list1, list2):
*do something to lists*
def method2():
*do something to lists*
return({'list1': list1, 'list2': list2})
get_lists_method1():
list1 = []
list2 = []
method1()
get_lists_method2():
list_dict = method1()
list1 = list_dict['list1']
list2 = list_dict['list2']
编辑,使用元组的方法:
def method3():
*create and do something with lists*
return (list1, list2)
get_lists_method3():
list1, list2 = method3()
我会使用元组赋值。由于这两个返回值一起返回,所以只需返回(列表1、列表2)
您想使用:
def method1(lst1=[], lst2=[]):
# do stuff to lst1 and lst2
lst1.append("Hello, ")
lst2.append("world!")
return (lst1, lst2)
def method2(lst1=[], lst2=[]):
# do stuff to lst1 and lst2
lst1.append("lst1")
lst2.append("lst2")
return (lst1, lst2)
def main():
m1_result = method1() # no arguments provided, so defaults are used
m2_result = method2(["List 1"], ["List 2"])
print(m1_result)
print(m2_result)
print(m1_result[0])
print(m1_result[1])
print(m2_result[0])
print(m2_result[1])
main()
此外,假设您是一个写入方法1和2,如果函数调用时没有提供参数,则可以指定参数的默认值。
不知道为什么我没有考虑使用解包的元组。在我的示例中,如果它返回一个元组而不是dict,那么它将是list1,list2=method2()
。另外,如果您对列表进行更改并将其作为参数传递,那么返回它不是有点多余吗?
def method1(lst1=[], lst2=[]):
# do stuff to lst1 and lst2
lst1.append("Hello, ")
lst2.append("world!")
return (lst1, lst2)
def method2(lst1=[], lst2=[]):
# do stuff to lst1 and lst2
lst1.append("lst1")
lst2.append("lst2")
return (lst1, lst2)
def main():
m1_result = method1() # no arguments provided, so defaults are used
m2_result = method2(["List 1"], ["List 2"])
print(m1_result)
print(m2_result)
print(m1_result[0])
print(m1_result[1])
print(m2_result[0])
print(m2_result[1])
main()