在 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