在 Python 的“while”循环中使用“and”表达式

Posted

技术标签:

【中文标题】在 Python 的“while”循环中使用“and”表达式【英文标题】:Using 'and' expressions in 'while' loops in Python 【发布时间】:2013-03-22 01:04:35 【问题描述】:

在我的程序中,我有一个列表,我想要一个循环,直到列表的所有列都等于 2。列中的所有项目都是数字,但有些被格式化为字符串,有些被格式化为整数,因为它们在程序的其他部分发生了变化。 以下是我尝试过的 3 个解决方案,我正在运行 python 2.7。

while (int(newlist[0][1]) != 2) and (int(newlist[1][1]) != 2) etc... != 2:

我遇到的问题是,当只有一个列表项(而不是整个列)等于 2 时,循环结束

while int(newlist[0-8][1]) != 2:


while int(newlist[0 and 1 and 2 and 3 and 4 and 5 and 6 and 7 and 8][1]) != 2:

如果有人能告诉我我做错了什么或更好的方法,我将非常感谢您的帮助

【问题讨论】:

在您的第一个示例中,如果任何项目不是 2,您希望 while 循环继续。因此,您希望使用 or 而不是 and。或者,您可以写while not (something == 2 and something_else == 2 and .... ) @LukeWoodward:我正要写那个! :) 【参考方案1】:

尝试使用 for 循环。假设L 是您的列表,现在我们可以遍历行,每个行本身就是一个列表,如下所示:

column = 1
for row in L:
  while int(row[column]) != 2:
    do_this()
    increase_column()

确保 while 循环通过增加 row[column] 来终止,因此它最终无法通过 while 测试。

【讨论】:

【参考方案2】:

括号中的表达式被计算为单个值:newlist[0-8]newlist[-8] 相同,newlist[0 and 1 and 2 and 3]newlist[0] 相同。你要any:

while any(int(newsublist[1]) != 2 for newsublist in newlist):

【讨论】:

我认为提问者可能在any 之后。如果 while 循环应该在所有项目为 2 时终止,如果任何项目不是 2,它应该继续运行。 这就是我要找的东西,谢谢 phihag 和 Luke Woodward!

以上是关于在 Python 的“while”循环中使用“and”表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中的另一个 while 循环中正确地创建一个 while 循环?

使用mysql在python中的while循环中进行SELECT

在 Python 的“while”循环中使用“and”表达式

Python:在while循环中无法调用函数

为啥这个while循环在Python中永远不会停止

如何在 Python 中使用 while 循环计算列表中的字符串?