用于循环的双重嵌套的Pythonic快捷方式?

Bol*_*ter 16 python for-loop tuples nested-loops

考虑一下我是否有一个带有元组参数(x,y)的函数,其中x在范围(X)中,y在范围(Y)中,正常的方法是:

for x in range(X):
    for y in range(Y):
        function(x,y)
Run Code Online (Sandbox Code Playgroud)

有办法吗?

for xy in something_like_range(X,Y):
    function(xy)
Run Code Online (Sandbox Code Playgroud)

这样xy是一个元组(x,y)?

Mik*_*wis 18

您可以使用itertools中的产品

>>> from itertools import product
>>> 
>>> for x,y in product(range(3), range(4)):
...   print (x,y)
... 
(0, 0)
(0, 1)
(0, 2)
(0, 3)
(1, 0)
(1, 1)
(1, 2)
(1, 3)

... and so on
Run Code Online (Sandbox Code Playgroud)

您的代码如下所示:

for x,y in product(range(X), range(Y)):
    function(x,y)
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 5

你可以使用itertools.product():

from itertools import product
for xy in product(range(X), range(Y)):
    function(xy)
Run Code Online (Sandbox Code Playgroud)