Python中双重嵌套for循环的简洁写法?
假设我有一个函数,它接受一个元组参数(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)呢?
5 个回答
4
它们是很“Pythonic”的——> (根据你的需求进行修改)
>>> [ (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
5
你可以使用 itertools.product()
这个功能:
from itertools import product
for xy in product(range(X), range(Y)):
function(xy)
19
你可以使用 itertools库里的product。
>>> 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
你的代码可以写成这样:
for x,y in product(range(X), range(Y)):
function(x,y)