2016-03-21 9 views
-2

私はまだPythonには新しい、私はwhileループで何かできますが、私はまだそれを理解するのに困っています。 for i in range(len(s)): for x in a: <- where a is an empty setwhileループをPythonで変更する方法

+0

あなたの質問にコードを書くときは、コードブロックを使用してください。あなたがここで何を求めているのかもはっきりしない。 – sramij

答えて

2

forループなしsetのうちのアイテムを取得するには、イテレータを使用することができます。これはおそらくあなたの教授のものです。はを参照しています。例:

i = iter(s) 
while True: 
    try: 
     next(i) 
    except StopIteration: 
     break 
+0

最後に例外が発生しないようにするには、 'next(i、default)'を呼び出すことができます。 – o11c

0

あなたはwhileループですべてを行うことができますが、時にはそれが厄介なことができます。 forについてのことは、シーケンスを消費するということです。

あなたの最初の例については、私たちが本当に望んでいたすべてがs

for i in range(len(s)): 
    print(i) 

i = 0 
while i < len(s): 
    print(i) 
    i += 1 

にインデックスにあったので、あなたがいないインデックスセットすることができるので、ループはかなりまっすぐ進むあなたの第二の例は、より多くの問題があります。おそらく、それを処理する最良の方法は、セットをリストに変換し、そのインデックスにすることです。または、forを模倣するには、セットの独自のイテレータを作成し、反復終了例外を自分で処理します。 Cのようないくつかの言語で

a = set() 
for x in a: 
    print(x) 

# this would be illegal because you can't index the set 
i = 0 
while i < len(a): 
    print(a[i]) # ERROR 
    i += 1 

# so we make a list 
i = 0 
_a = list(a) 
while i < len(_a): 
    print(_a[i]) 
    i += 1 

# or use an iterator for the set 
a_iter = iter(a) 
while True: 
    try: 
     print(next(a_iter)) 
    except StopIteration: 
     break 

は、 whileは...

while(x < 5)) {...} 
for(;x < 5;) {...} 

forのちょうどabreviated形ですが、あなたが見ることができるように、そのようなのpythonの場合ではありません。