Конденсация для л oop выражений (Python) - PullRequest
0 голосов
/ 02 августа 2020

Есть ли способ сжать эту пару циклов до двух или одной строки?:

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

, чтобы больше походить на (помните, что это не работает):

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

Обратите внимание: суть не в том, чтобы разрешить фактические циклы, а просто в том, что for l oop должен содержать переменную счетчика некоторого вида до while l oop.

Вопрос исключительно в синтаксисе, поэтому определение значения z здесь не вопрос. вместо этого код может быть таким:

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

Или любая другая комбинация for и while l oop, где есть по крайней мере одна переменная, определенная между for и while, но я хочу петли уплотнены, чтобы полностью не исключить использование петель.

1 Ответ

0 голосов
/ 02 августа 2020

А может это?

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