Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
循环表达式的压缩(Python)_Python_Loops_Syntax_Obfuscation - Fatal编程技术网

循环表达式的压缩(Python)

循环表达式的压缩(Python),python,loops,syntax,obfuscation,Python,Loops,Syntax,Obfuscation,有没有办法将这对循环压缩成两行或一行 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:

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

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
对于x在y中:
z=1
q=0
当z
或者for和while循环的任何其他组合,其中在
for
while
之间至少定义了一个变量,但我希望循环被压缩,而不是完全删除循环的使用。

或者这是什么

对于x,z in[(x,1)对于x in y]:
当x>z时:
z+=1

使用理解通常是压缩这样的循环的方法,但您需要提供一个更真实的示例(您实际上正在构建一个列表),以获得如何将其转化为理解的好示例。这个问题的答案就是
z=y[-1]
:P@Samwise我编辑了主要帖子,试图更好地反映这个问题;目标不是解析z的值,这只是语法的一个示例。它适用于任何一对
for
while
循环,其中在
for
的范围内和
while
之前至少声明了一个变量。为什么循环中的标量变量不断被重新初始化?为什么不进行循环的最后一次迭代呢?再次强调:通常,这种循环的目的是建立一个列表,在这种情况下,您需要进行理解,但无法通过您提供的示例来证明这一点。代码的功能与此无关,这纯粹是一个语法问题。请忽略代码的实际结果;问题只在于是否有一种方法可以编写相同的代码、相同的值和相同的两个循环,只需更少的行。没有实际更改代码。例如,当z都在一行时,我可以使用
。q+=1不需要低于while循环,但按照惯例是这样的。所以问题是,是否有一种方法可以在不改变实际组件的情况下,将这段代码压缩成更小的片段。
for x in y:
      z = 1 
      q = 0
      while z < x:
            q += 1