次のように、Python で for ループを簡単に作成できます。
for i in range(10):
しかし、C++ では非常に簡単な、より複雑なものを作成する方法がわかりませんでした。
Python で次のような for ループをどのように実装しますか。
for(w = n; w > 1; w = w / 2)
これまでに作成した最も近いものは次のとおりです。
for w in reversed(range(len(list)))
for i in range(0, 10, 2):
print(i)
>>> 0
>>> 2
>>> 4
>>> 6
>>> 8
http://docs.python.org/2/library/functions.html
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)
[0, 3, 6, 9]
ジェネレーターを使用する必要があります。これは次のように実装できます。
def stepDown(n):
while n>1:
yield n
n = n/2
for i in stepDown(n):
print i # or do whatever else you wish.
これは、頭にある他の複雑なパターンに簡単に一般化できることに注意してください。
何かのようなものfor i in [n/(2**j) for j in range(int(math.log(n))+1)]