gpt4 book ai didi

python - 在列表理解期间无法解包返回的元组

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:39 24 4
gpt4 key购买 nike

我有一个接受输入并返回 3 项元组的函数:

def f(a, b):
x = a + 1
y = x + 2
z = y + 3
return (x, y, z)

我从一组元组开始:

my_set = {(1, 2), (3, 4), ... (m, n)}

我需要构建一个列表,但是下面会抛出一个 TypeError:

[(a, b, x, y, z, (x, y, z)) for a, b in my_set for x, y, z in f(a, b)]
TypeError: 'int' object is not iterable

我正在审查 this显示类似过程的帖子,但出于某种原因,for x, y, z ... 抛出异常,我不确定我是否只是忽略了一些小问题。

最佳答案

f(a, b) 解包为 x, y, z 是有效的,但这不是您正在做的。 for x, y, z in f(a, b) 尝试解压每个元素 f(a, b) 就好像每个元素都是一个单独的三元组。

您正在寻找的是一种将 f(a, b) 分配给列表理解中的内容的方法,而无需对其进行迭代。有一些解决方法,但我建议只使用普通循环:

l = []
for a, b in my_set:
x, y, z = f(a, b)
l.append((a, b, x, y, z, (x, y, z)))

如果你真的想使用列表理解,一个解决方法是循环一个虚拟列表 [f(a, b)] 而不是 f(a, b):

[(a, b, x, y, z, (x, y, z)) for a, b in my_set for x, y, z in [f(a, b)]]

关于python - 在列表理解期间无法解包返回的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068867/

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