Pythonのお勉強 Part 27
■ このスレッドは過去ログ倉庫に格納されています
0147デフォルトの名無しさん
2008/06/17(火) 11:07:29とても正しいです…
def collatz(n):
r=[]
while n>1:
r.append(n)
n = 3*n+1 if n%2 else n/2
yield r
>>> collatz(13)
<generator object at 0x02637788>
>>> [x for x in collatz(13)]
[[13, 40, 20, 10, 5, 16, 8, 4, 2]]
def collatz(n):
r=[]
while n>1:
r.append(n)
n = 3*n+1 if n%2 else n/2
yield r
>>> [x for x in collatz(13)]
[[13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2],
[13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2]]
なんか動作がわからない。なんで完成したリストが13回返されるかな…
計算結果を格納した暫定結果リストを返してくれれば便利そげだけど
■ このスレッドは過去ログ倉庫に格納されています