我有以下功能:如何將函數的結果存儲在列表中?
def second(n):
z =0
while z < n:
z = z +1
for i in range(n):
print z
輸出將是第二(3):
1
1
1
2
2
2
3
3
3
我已經試過幾件事情,但似乎無法存儲「結果」在列表中供進一步使用。有沒有人知道我應該嘗試什麼?
我有以下功能:如何將函數的結果存儲在列表中?
def second(n):
z =0
while z < n:
z = z +1
for i in range(n):
print z
輸出將是第二(3):
1
1
1
2
2
2
3
3
3
我已經試過幾件事情,但似乎無法存儲「結果」在列表中供進一步使用。有沒有人知道我應該嘗試什麼?
打印不會保存結果 - 它只是將它們(一次一個)發送到標準輸出(標準輸出)以顯示在屏幕上。要獲得結果副本,我虛心地建議您使用yield
關鍵字將其變成generator function。例如:
>>> def second(n):
... z =0
... while z < n:
... z = z +1
... for i in range(n):
... yield z
...
>>> print list(second(3))
[1, 1, 1, 2, 2, 2, 3, 3, 3]
在上面的代碼list()
擴展到發電機可以分配給一個變量來保存結果的列表。如果您想保存second(3)
的所有結果列表,您可以選擇使用results = list(second(3))
而不是打印它。
感謝您的快速回復。我必須看看產量... – aaaa
這裏是一個生成器表達式例如:
list(j+1 for i in xrange(n) for j in [i]*n)
有一種更好的表達方式(沒有兩個循環);看到我對這個問題的評論。 –
是的,我注意到它,發現它很有趣。 – dansalmo
請注意,您在這裏創建的列表也可以直接定義爲'[1 x x/n for x in xrange(n * n)]''。 –