[英]zip function to store multiple outputs for a return statement
def somefunction():
outputs = []
a = 0
while a < 100:
if a%2 == 0:
b = 2*a + 1
outputs.append(list(zip(a,b)))
a += 1
return outputs
上面的代码不是我正在使用的,但是会产生相同的错误,为什么上面的代码返回:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
TypeError: zip argument #1 must support iteration
这是一种将函数中所有项目作为一个对象返回的特别有效的方法吗? 如果没有,什么是更好的方法?
由于其确切的错误消息,它返回该错误。 也就是说, zip参数必须支持迭代。 您只有两个要“存储在一起”的数字。 在这种情况下,我假设您要查找的是元组数据类型。 要么将其与现有的列表数据类型“放在一起”,要么将它们“放在一起”。 拉链是完全不必要的。 我建议阅读更多有关Python的内置类型的信息 。
只需获取元组列表!! (或列出,如果您愿意的话,但是由于您不能更改元组并且要返回所有输出,因此元组更有意义)
def somefunction():
outputs = []
a = 0
while a < 100:
if a%2 == 0:
b = 2*a + 1
tup = (a,b)
outputs.append(tup)
a += 1
return outputs
这里不需要使用zip
,zip是用于将两个列表连接在一起的,您只有两个整数,因此可以将它们存储在元组中,然后append
其append
到outputs
如果你存储的所有邮编将工作a
S IN a_list
和所有b
S IN b_list
。 然后,您可以执行以下操作:
outputs.append(zip(a_list,b_list))
这是没有必要的,因为您可以append
a
和b
一起append
到一个元组中以output
,就像我的示例一样。 但这就是这样做的方式。
在这种情况下,您还可以使用列表理解:
def f():
return [(x, 2*x + 1) for x in range(100) if x%2 == 0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.