我有两个列表list1和list2,我必须使用func()返回的值将结果附加到它们。
item1,item2=func()
list1.append(item1)
list2.append(item2)
是否可以用一个声明替换上述内容?换句话说,如何在不创建任何临时变量的情况下将返回的元组追加到两个列表中?
编辑: 请比较损失的效率和原因。我无法理解。
答案 0 :(得分:5)
你不想这样做,但是:
map(lambda l,v: l.append(v), (list1, list2), func())
在Python3中,您需要强制map
迭代:
list(map(lambda l,v: l.append(v), (list1, list2), func()))
答案 1 :(得分:2)
一种棘手的方式:
(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,如果不同大小的列表会失败。