将多个列表作为参数而不是在dict中返回它们,有没有更好的方法(python3)?

将多个列表作为参数而不是在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():

我有一个函数,需要返回在Python3.x中函数内部创建的两个列表。与其返回列表,不如将这两个列表作为参数,并在这些列表中附加我需要的任何信息。我的另一种方法是返回一个包含2个列表的字典,然后在函数返回后使用键获取列表。这两种方法都需要在函数调用之前/之后进行准备,所以我只是想知道是否有更好的方法返回列表,如果没有,这两种方法中哪一种更好

示例代码:

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