Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
双嵌套for循环的Pythonic快捷方式?_Python_For Loop_Tuples_Nested Loops - Fatal编程技术网

双嵌套for循环的Pythonic快捷方式?

双嵌套for循环的Pythonic快捷方式?,python,for-loop,tuples,nested-loops,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) 有办法吗 for xy in something_like_range(X,Y): function(xy) 这样xy就是一个元组(x,y)?您可以使用: 试用itertools的产品: 你可以用 您的代码如下所示: for x,y in produc

考虑一下,如果我有一个接受元组参数(x,y)的函数,其中x在范围(x)内,y在范围(y)内,通常的做法是:

for x in range(X):
    for y in range(Y):
        function(x,y)
有办法吗

for xy in something_like_range(X,Y):
    function(xy)
这样xy就是一个元组(x,y)?

您可以使用:


试用itertools的产品:

你可以用

您的代码如下所示:

for x,y in product(range(X), range(Y)):
    function(x,y)
Pythonic它们是->(根据您的要求进行修改)

生成器版本

gen = ( (x,y)   for x in range(2)   for y in range(2) )
>>> for x,y in gen:
...     print x,y
... 
0 0
0 1
1 0
1 1
对于接近您想要的用途:

for x,y in something_like_range(X,Y):
    your_function(x,y)
=)

for x,y in product(range(X), range(Y)):
    function(x,y)
>>> [ (x,y)   for x in range(2)   for y in range(2)]
[(0, 0), (0, 1), (1, 0), (1, 1)]
gen = ( (x,y)   for x in range(2)   for y in range(2) )
>>> for x,y in gen:
...     print x,y
... 
0 0
0 1
1 0
1 1
from itertools import product

def something_like_range(*sizes):
    return product(*[range(size) for size in sizes])
for x,y in something_like_range(X,Y):
    your_function(x,y)