压缩 for 循环表达式 (Python)

Condensing for loop expressions (Python)

有没有办法将这对循环压缩成两行或一行?:

for x in y:
         z = 1
        while x > z: z += 1

看起来更像(请注意以下内容无效):

for x in y: z = 1
    while x > z: z += 1

请注意:重点不是解决实际循环,只是 for 循环必须在 while 循环之前包含某种计数器变量。

问题纯粹是关于语法的,所以解析 z 的值不是这里的查询。代码可能是这样的:

for x in y:
      z = 1 
      q = 0
      while z < x:
            q += 1

或者 for 和 while 循环的任何其他组合,其中在 forwhile 之间至少定义了一个变量,但我希望循环压缩,而不是删除使用完全循环。

或者这个?

for x, z in [(x, 1) for x in y]:
    while x > z:
        z += 1