gpt4 book ai didi

python - 使用列表理解将元组解包到函数中

转载 作者:行者123 更新时间:2023-11-28 21:06:56 26 4
gpt4 key购买 nike

假设我有一个元组列表和一个接受两个参数的简单函数:

a_list = [(1,6), (6,8)]
add_it(a + b)

我现在想将元组解压到函数中。我知道我可以通过索引来做到这一点:

l = [add_it(tup[0], tup[1]) for tup in a_list]

但我有点希望这也能奏效:

l = [add_it(a, b) for tup in a_list for a, b in tup]

因为这行得通:

tup = (3,5)
a, b = tup
>>> 3 5

有人能指出我所缺少的吗?

最佳答案

因为在最内层的 for 语句中,您正在 迭代 元组,所以您无法解压它。您解包序列的各个项目。如果它是成对的元组或成对的列表,那么它就可以工作。

>>> a_list = [(1,6), (6,8)]
>>> b_list = [[(1,6)], [(6,8)]]
>>> def add_it(a, b): return a+b
...
>>> l = [add_it(a, b) for tup in a_list for a, b in tup]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
TypeError: 'int' object is not iterable
>>> l = [add_it(a, b) for tup in b_list for a, b in tup]
>>> l
[7, 14]

而且,正如其他人所指出的,它是过度设计的,您只需要一个 for 表达式就可以理解,因为 a_list 已经是一对列表:

>>> [add_it(a,b) for a,b in a_list]
[7, 14]

关于python - 使用列表理解将元组解包到函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com