Python从返回元组附加到列表
我有一个列表和一个返回3元组的函数Python从返回元组附加到列表,python,Python,我有一个列表和一个返回3元组的函数f。我想捕获前两个返回值,第三个返回值附加到lst。我知道我可以做到以下几点: a, b, c = f() lst.append(c) 但我希望有一种方法不使用无关变量“c”。我知道我也能做到: lst.append(f()[2]) 但我不想丢弃另外两个返回值。 有什么建议吗 编辑:我很感谢提供的答案,但更清楚地说,问题是要找到一条简洁的单行线。在附加结果之前,将返回值指定给局部变量。 不,不能捕获两个值并在一个语句中追加第三个值;每个命令只能得到一个“动词
f
。我想捕获前两个返回值,第三个返回值附加到lst。我知道我可以做到以下几点:
a, b, c = f()
lst.append(c)
但我希望有一种方法不使用无关变量“c”。我知道我也能做到:
lst.append(f()[2])
但我不想丢弃另外两个返回值。有什么建议吗
编辑:我很感谢提供的答案,但更清楚地说,问题是要找到一条简洁的单行线。在附加结果之前,将返回值指定给局部变量。 不,不能捕获两个值并在一个语句中追加第三个值;每个命令只能得到一个“动词”
result = f()
lst.append(result[2])
如果您的问题不是多写一行代码,而是希望函数调用、赋值和附录在一条语句中,那么您可以使用包装函数:
def append_and_assign(mylist, myfunc):
a, b, c = myfunc()
mylist.append(c)
return a,b,c
所以你可以打电话:
a,b,c = append_and_assign(lst, f)
除非更改函数定义,否则使用“一行程序”(不使用分号将两条语句放在一行中)是不可能实现的 具体来说,用以下方式定义
f()
:
def f(list_to_append_to):
a = ...
b = ...
c = ...
list_to_append_to.append(c)
return a, b
然后:
c
似乎与您正在使用它无关。我可以问一下问题是从哪里来的吗?@AGNGazer不太确定。如果OP需要f
中的所有值,但不需要三个不同的变量,这可能就是OP需要的。(不过,我承认我最初的反应和你的一样)。在OP澄清他们最初的方法的问题之前,我们不能做出这样的判断。@AGNGazer,好吧,既然OP已经更新声明他们只需要一行,你的评论是有效的。很酷的副作用。
a, b = f(mylist)