私はループのために使用することを知っています。戻り値としてNoneを返します。しかし、ここで助けてください。Pythonの方法Pythonの方法引数のセットで関数を呼び出して、何も返さない限りNoneを返します。
- iter(myfunc(), None)
myfunc()
返信するまでNone
私はこれとは正反対のコードを探しています。 - iter(myfunc(), not None), Call myfunc()
それは任意のものを返しますが、事前にNone
おかげ..
私はループのために使用することを知っています。戻り値としてNoneを返します。しかし、ここで助けてください。Pythonの方法Pythonの方法引数のセットで関数を呼び出して、何も返さない限りNoneを返します。
- iter(myfunc(), None)
myfunc()
返信するまでNone
私はこれとは正反対のコードを探しています。 - iter(myfunc(), not None), Call myfunc()
それは任意のものを返しますが、事前にNone
おかげ..
:
x = None
while x is None:
x = f()
まで、そこには準備ができて組み込みはありませんが、ジェネレータ関数を構築するために十分に簡単です:
def iter_while_none(f):
while True:
value = f()
if value is not None:
return
yield value
値が得られたものの、それほど興味深いものではない。結局、毎回None
です。
私はOPがそれを非常に明確にしてくれなかったと思っていますが、彼らはそのNon-None値が何であるか知りたいと思っています。このソリューションはその価値を低下させます。 – kojiro
すべての機能を内蔵していません。私の意見では、通常の2つの引数の形式のiter
でさえ、よく知られている機能ではないため、大部分の人が読むのが難しくなるため、使用する価値はありません。ちょうどそれを簡単かつ簡単に保つ。余分な1行か2行は傷つかないでしょう。たった3行で
while True:
x = myfunc()
if x is not None:
break
この回答は、Pythonのパワーの行使のビットです。私はちょうどiter
2-arityフォームがその2番目のパラメータのための関数をとらないという不満を感じます。
しかし、あなたが十分に狂っている場合は、それがあります。オブジェクトの等価性を次のように再定義することができます。
class Something:
def __eq__(self, other):
self.lastother = other
return other is not None
sentinel = Something()
myiter = iter(myfunc, sentinel)
for nope in myiter:
pass
match = sentinel.lastother
があります。楽しい。 Pythonは、この方法で平等の定義を覆すことができます。楽しんで城を襲ってください!
あなたは冗談か?娯楽と教育の要因についてこの答えをアップアップしてください。しかし、それを受け入れないでください!それを受け入れることは、スクリプトの児童がそれをコピーしてしまうことを意味し、それはいくつかのプロダクションシステムで終わるでしょう。私はその責任を負いたくありません!代わりにVpfbの答えを受け入れてください! – kojiro
私はこの回答が最も好きなので、私はそれを受け入れた、私はあなたの願いを尊重します – AlokThakur
@ AlokThakur私はそれを感謝しますが、私が書いたコードは正しいよりも教育的です。あなたは本当にVpfbの答えを考慮する必要があります。 – kojiro
'itertoolsからのインポートdropwhile、repeat、starmap; next(dropwhile(lambda x:x isなし、starmap(my_func、repeat(()))) ' – Bakuriu
my_func()は何をしていますか? –
@PadraicCunninghamそれは引数に正規表現を適用し、一致したオブジェクトを返します – AlokThakur