60

Python ジェネレーター関数で複数の値を生成することはできませんか?

例、

In [677]: def gen():
   .....:     for i in range(5):
   .....:         yield i, i+1
   .....:         

In [680]: k1, k2 = gen()
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-680-b21f6543a7e9> in <module>()
----> 1 k1, k2 = a()

ValueError: too many values to unpack

これは次のように機能します。

In [678]: b = a()

In [679]: list(b)
Out[679]: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

私がこれをしても同じ結果:

In [692]: def a():
    for i in range(5):
        yield i
        yield i+1

ありがとう。

4

4 に答える 4

0

ジェネレーターから複数の値を返したい場合は、両方のソリューションが問題なく機能します。

 def gen():
    for i in range(5):
        yield i, i+1

解決策 1:

 for values in gen():
     print(values[0],values[1])

解決策 2:

 for value1, value2 in gen():
     print(value1, value2)
于 2021-08-15T06:29:35.393 に答える