1

例えば:

>>> [x for x in range(y) for y in range(z) for z in range(3)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined

これは次と同じように動作すると予想されます。

>>> a=[]
>>> for z in range(3):
...   for y in range(z):
...     for x in range(3):
...       a.append(x)
... 
>>> a
[0, 1, 2, 0, 1, 2, 0, 1, 2]

しかし、そうではありません。なんで?

4

3 に答える 3

4

従来の for ループと同じ順序でループを配置します。

>>> [x for z in range(3) for y in range(z) for x in range(3)]
[0, 1, 2, 0, 1, 2, 0, 1, 2]
于 2013-08-09T18:48:48.797 に答える
4

ループの順序を逆にすると、現在の理解が機能します。

[x for z in range(3) for y in range(z) for x in range(3)]
于 2013-08-09T18:50:50.320 に答える