0

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

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

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

有任何想法吗?

4

3 回答 3

3

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

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

你似乎在这里返回列表,你确定你不是要使用list.extend()吗?

如果您正在扩展list1and list2,您可以使用切片分配:

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

但这a)对新手来说是令人惊讶的,并且b)在我看来相当难以理解。我仍然会使用单独的分配,然后扩展调用:

res1, res2 = func()
list1.extend(res1)
list2.extend(res2)
于 2013-11-09T17:05:57.887 回答
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)

希望能帮助到你!

于 2013-11-09T17:06:15.893 回答
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]]
>>>

它可读且高效。

于 2013-11-09T17:06:46.590 回答