【发布时间】:2013-12-05 00:37:05
【问题描述】:
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 需要两个列表...不清楚您要完成什么
-
您希望返回的值是什么?如果你想要一个 2 元组的列表,
outputs.append((a, b))有什么问题吗? -
嗨,你想做什么?可能,您是否尝试返回多个值?如果是这样,在 Python 中返回多个值是完全可以接受的。
-
听起来你想让你的函数成为一个生成器 - 查找
yield。 -
我试图将循环中的所有返回分组到一个列表中,但同时保持 a 和 b 彼此相关。但在我原来的功能中,我有超过 2 个项目。
标签: python list while-loop zip append