私はまだPythonには新しい、私はwhileループで何かできますが、私はまだそれを理解するのに困っています。 for i in range(len(s)):
for x in a: <- where a is an empty set
whileループをPythonで変更する方法
-2
A
答えて
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の場合ではありません。
あなたの質問にコードを書くときは、コードブロックを使用してください。あなたがここで何を求めているのかもはっきりしない。 – sramij