以下のコードだと100回繰り返すと終わってしましますが、無限ループにしたいです。いい方法はないでしょうか?
またfor文を使いたいです。お願いします。
import time start = time.time() i=0 sumation=0 for i in range(100): sumation+=i elapsed_time = time.time() - start print ("for_time:{0}".format(elapsed_time) + "[sec]")
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
itertools.countで十分では
plain
1In [1]: def x(c): 2 : i = 0 3 : while True: 4 : if i == c : 5 : return 6 : i += 1 7 : 8 9In [2]: from itertools import count 10 11In [3]: def y(c): 12 : for i in count(0): 13 : if i == c: 14 : return 15 : 16 17In [4]: %timeit x(1000000) 1847.5 ms ± 1.51 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) 19 20In [5]: %timeit y(1000000) 2136.9 ms ± 1 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Pythpnにアルゴリズムでない"最速"を求めるのはナンセンスだと思うので。
投稿2019/09/04 08:36
編集2019/09/04 08:37総合スコア11299
0
ベストアンサー
メモリを食いつぶしてしまいそうな??
python
for x in iter(int, 1):
[python - Is there an expression for an infinite generator? - Stack Overflow](https://stackoverflow.com/questions/5737196/is-there-an-expression-for-an-infinite-generator)
投稿2019/09/04 07:40
総合スコア37413
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
iterなら値を保持してなかったはずなので多分大丈夫ですね。ところで私もそれは考えたんですけど、iの値を使うならダメだと思って却下しました。
while True: を使ったときのように、内部でインクリメントするのかなあ、と勝手に思っていました。
2019/09/04 07:50
iter(callable, sentinel)は、callableを引数なしで呼んだ戻り値を、sentinelにその値が等しくなるまでyieldし続けるという動作になるので……。
k = []
k.append(k)
gen = (len(il) - 1 for il in k if k.append(k) or 1)
メモリを食い潰すイテレータは例えばこんなのですw
安易に展開しさえしなければ、何かに使えそう……?ww
2019/09/04 07:59
コードゴルフで内包表記縛りとかしてると結構使えるんですけど、普段はあんまり使い道ないですねw

0
whileを使うのが楽です。どうしても使いたくない場合は、いくつか方法があります。ですが、まぁwhileの方が手軽だとは思いますが。
python
1# 方法その1 無限イテレータを作る 2def counter(): 3 c = 0 4 while True: 5 yield c 6 c += 1 7 8for i in counter(): 9 ... 10 11# これは数が要らないならもっと簡単にかける 12# こんな風に 13for _ in iter(lambda: 0, 1): 14 ... 15 16# 方法2 黒魔術その1 17k = [] 18k.append(k) 19 20for il in k: 21 i = len(il) - 1 22 k.append(k) 23 ... 24 25# 方法3 黒魔術その2 26k = [] 27k.append(k) 28for i in (len(il) - 1 for il in k if k.append(k) or 1): 29 ...
この中なら方法1が一番おすすめです。
投稿2019/09/04 07:39
編集2019/09/04 07:45総合スコア322
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。