加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在列表理解期间无法解压缩返回的元组

发布时间:2020-12-20 11:05:50 所属栏目:Python 来源:网络整理
导读:我有一个接受输入并返回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,z,(x,z)) for a,b in my_set for x,z
我有一个接受输入并返回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,z,(x,z)) for a,b in my_set for x,z in f(a,b)]
TypeError: 'int' object is not iterable

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

解决方法

将f(a,b)解包为x,z是有效的,但这不是你正在做的事情.对于f(a,b)中的x,尝试解包f(a,b)的每个元素,就像每个元素是一个单独的3元组一样.

你正在寻找的是一种方法,将f(a,b)分配给列表理解中的某些东西,而不是迭代它.有解决方法,但我建议只使用正常循环:

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

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

[(a,z in [f(a,b)]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读