Python函数返回2个列表

时间:2013-10-14 20:32:27

标签: python list function python-2.7 tuples

我有一个创建两个列表的函数。我希望函数将两个列表作为[], []返回。

这是代码。这将返回一个类似于此[[], []]的列表,关闭但仍然不是我想要的。

def create_xy_lst(start, length, step, up, down):
    new_list = []
    new_list.append(create_x_lst(start, length, step))
    new_list.append(create_y_lst(start, length, up, down))
    return new_list

然后我尝试了另一种方法。这将返回([], [])这是一个元组。

def create_xy_lst(start, length, step, up, down):

    x = (create_x_lst(start, length, step))
    y = (create_y_lst(start, length, up, down))
    return x, y

如何让函数返回[], []

Python 2.7

5 个答案:

答案 0 :(得分:7)

[], [] 是一个元组

>>> [], []
([], [])

逗号使值成为元组,而不是括号。

返回x, y是返回多个值的正确方法。

您可以将元组解压缩为多个变量:

x, y = [], []

这也适用于函数返回值:

x, y = create_xy_lst(...)

在作业中拆包不仅限于元组;它适用于任何序列:

char1, char2, char3 = 'foo'

答案 1 :(得分:2)

[], []是一个元组。 ()在语法上很简单,让我演示一下:

>>> hello = 1,
>>> hello
(1,)
>>> cheese = [1,2,3], [6,7,8]
>>> cheese
([1, 2, 3], [6, 7, 8])

正如您所看到的,,是构成元组的原因。

你可以像这样解压缩它们:

>>> a, b = [1,2], [3,4]
>>> a
>>> [1,2]
>>> b
>>> [3,4]

所以,在你的函数中:

x, y = create_xy_lst(start, length, step, up, down)

如果你在元组中有多个列表,这也是一个巧妙的技巧(如果你在Python 3中):

>>> a, *b = [2], [4,5,6], [10]
>>> a
>>> [2]
>>> b
>>> ([4,5,6], [10])

但是,如果您只想返回一个list,则可以执行此操作:

return x + y

答案 2 :(得分:1)

def returnNumbers():
    return 1, 2

first, second = returnNumbers()
print first, second

会打印

1 2

您只需返回一个元组并解压缩值,如示例所示。

您甚至可以检查函数返回的数据类型,如

print type(returnNumbers())

它会打印

<type 'tuple'>

答案 3 :(得分:0)

你的第二次尝试(主要)是正确的方式(你只需要在函数调用周围使用括号)。

我猜你正在检索你的结果:

foo = create_xy_list(...)

试试这个:

foo, bar = create_xy_list(...)

答案 4 :(得分:0)

你在问一个元组,但你拒绝接受它应该是一个元组的想法,所以这是另一个想法。你可以把它变成一个发电机。

def create_xy_lst(start, length, step, up, down):

    yield create_x_lst(start, length, step))
    yield create_y_lst(start, length, up, down))

每个查询只会产生1个列表。

val = create_xy_lst(a,b,c,d,e)
print(val.next()) #first list
print(val.next()) #second list

或者你可以循环它

for val in create_xy_lst(a,b,c,d,e):
    print(val)