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)]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容