Python中的for-in控制结构
我是一名PHP程序员,想要理解Python中的for in语法。我了解基本的for in用法。
for i in range(0,5):
在PHP中会是这样的:
for ($i = 0; $i < 5; $i++){
但是这个具体是做什么的呢?
for x, y in z:
那它在PHP中怎么写呢?
这是我想要翻译成PHP的完整代码:
def preProcess(self):
""" plan for the arrangement of the tile groups """
tier = 0
tileGroupNumber = 0
numberOfTiles = 0
for width, height in self._v_scaleInfo:
#cycle through columns, then rows
row, column = (0,0)
ul_x, ul_y, lr_x, lr_y = (0,0,0,0) #final crop coordinates
while not ((lr_x == width) and (lr_y == height)):
tileFileName = self.getTileFileName(tier, column, row)
tileContainerName = self.getNewTileContainerName(tileGroupNumber=tileGroupNumber)
if numberOfTiles ==0:
self.createTileContainer(tileContainerName=tileContainerName)
elif (numberOfTiles % self.tileSize) == 0:
tileGroupNumber += 1
tileContainerName = self.getNewTileContainerName(tileGroupNumber=tileGroupNumber)
self.createTileContainer(tileContainerName=tileContainerName)
self._v_tileGroupMappings[tileFileName] = tileContainerName
numberOfTiles += 1
# for the next tile, set lower right cropping point
if (ul_x + self.tileSize) < width:
lr_x = ul_x + self.tileSize
else:
lr_x = width
if (ul_y + self.tileSize) < height:
lr_y = ul_y + self.tileSize
else:
lr_y = height
# for the next tile, set upper left cropping point
if (lr_x == width):
ul_x=0
ul_y = lr_y
column = 0
row += 1
else:
ul_x = lr_x
column += 1
tier += 1
7 个回答
0
这大概可以理解为(伪代码):
For every item i in z:
x = i[0]
y = i[1]
Loop body happens here
这意味着在z
里面的每一个项目都有两个元素(比如说,每个项目都是一个包含两个项目的列表)。
1
在你简单的例子中,for x,y in z
,这里的 z 是一组坐标对的列表,比如说 [(0,1), (2,5), (4,3)]
。每次循环的时候,x
这个变量会拿到坐标对中的第一个数,而 y
则会拿到第二个数。
1
self._v_scaleInfo:
是一个包含多个元组的数组,应该像这样 [(x,y),(x,y),...]
。所以 for width, height in self._v_scaleInfo:
这个循环会遍历这个数组,把每个元组的值分别填充到 width 和 height 这两个变量里。
在 PHP 中可以这样写:
$scaleInfo = array(array(x,y), array(x,y),...);
for( $i = 0; $i < count($scaleInfo); $i++ ) {
$width = $scaleInfo[$i][0];
$height = $scaleInfo[$i][1];
...
}