假设我具有以下功能:
def f():
return [1,2,3], [4,5,6]
我可以成功调用此函数,如下所示:
a,b = f()
print(a,b) #prints [1, 2, 3] [4, 5, 6]
但是假设我只想访问第一个列表的第一项(1)和第二个列表的第一项(4)。为此,我成功地将其命名如下:
a,b = f()[0][0], f()[1][0]
print(a,b) #prints 1 4
我无法控制函数f()
,因为它是在库中编写的。
在Python中是否可以执行最后一个操作,而无需两次调用该函数并且不使用返回的a和b值?
答案 0 :(得分:9)
使用extended unpacking assignment:
>>> def f():
... return [1,2,3], [4,5,6]
...
...
>>> [a0, *rest], [b0, *rest] = f()
>>> a0, b0
(1, 4)
使用zip-splat技巧:
>>> next(zip(*f()))
(1, 4)