将返回值直接追加到一组列表中



我有两个列表list1和list2,我必须用func()返回的值将结果附加到这两个列表。

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

是否可以用一句话来代替上述内容?换句话说,如何在不创建任何临时变量的情况下将返回的元组附加到两个列表中?

编辑:请比较损失的效率和原因。我听不懂。

您不想这样做,但是:

map(lambda l,v: l.append(v), (list1, list2), func())

在Python3中,您需要强制map进行迭代:

list(map(lambda l,v: l.append(v), (list1, list2), func()))

一种棘手的方法:

(lambda x,y: list1.append(x) or list2.append(y))(*func())

相当于

def lambda_func(x,y):
    return list1.append(x) or list2.append(y)
lambda_func(*func())

如果列表大小相同,您也可以使用zip:

list1[:], list2[:] = zip(*zip(list1,list2)+[func()])

我不认为它比你发布的代码更有效率
多亏了Padraic,如果列表大小不同,它就会失败。

最新更新