質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1673閲覧

python 無限ループ 最速

raonarud

総合スコア88

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/09/04 07:18

編集2019/09/04 07:20

以下のコードだと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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
quickquip

総合スコア11051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

Lhankor_Mhy

総合スコア36134

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

frodo821

2019/09/04 07:42 編集

iterなら値を保持してなかったはずなので多分大丈夫ですね。ところで私もそれは考えたんですけど、iの値を使うならダメだと思って却下しました。
Lhankor_Mhy

2019/09/04 07:47

while True: を使ったときのように、内部でインクリメントするのかなあ、と勝手に思っていました。
frodo821

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
Lhankor_Mhy

2019/09/04 07:56

安易に展開しさえしなければ、何かに使えそう……?ww
frodo821

2019/09/04 07:59

コードゴルフで内包表記縛りとかしてると結構使えるんですけど、普段はあんまり使い道ないですねw
guest

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
frodo821

総合スコア322

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問