循环表达式的压缩(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