[英]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.