Python将两个返回附加到两个不同的列表

时间:2013-11-09 17:04:27

标签: python return append

我想将两个返回的列表附加到两个不同的列表,例如

def func():
    return [1, 2, 3], [4, 5, 6]

list1.append(), list2.append() = func()

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您必须首先捕获返回值,然后追加:

res1, res2 = func()
list1.append(res1)
list2.append(res2)

您似乎在此处返回列表,是否确定您不想使用list.extend()

如果您要延长list1list2,则可以使用切片分配:

list1[len(list1):], list2[len(list2):] = func()

但这对于新人来说是令人惊讶的,而b)在我看来相当难以理解。我仍然使用单独的赋值,然后扩展调用:

res1, res2 = func()
list1.extend(res1)
list2.extend(res2)

答案 1 :(得分:1)

为什么不直接存储返回值?

a, b = func() #Here we store it in a and b
list1.append(a) #append the first result to a
list2.append(b) #append the second one to b

有了这个,如果a之前是[10]b之前是[20],那么您将获得以下结果:

>>> a, b
[10, [1,2,3]], [20,[4,5,6]]
不,这不难,是吗?

顺便说一下,可能想要合并列表。为此,您可以使用extend

list1.extend(a)

希望它有所帮助!

答案 2 :(得分:0)

单线解决方案是不可能的(除非你使用一些神秘的黑客,这总是一个坏主意)。

你能得到的最好的是:

>>> list1 = []
>>> list2 = []
>>> def func():
...     return [1, 2, 3], [4, 5, 6]
...
>>> a,b = func()     # Get the return values
>>> list1.append(a)  # Append the first
>>> list2.append(b)  # Append the second
>>> list1
[[1, 2, 3]]
>>> list2
[[4, 5, 6]]
>>>

它可读且高效。