【问题标题】:Using 'and' expressions in 'while' loops in Python在 Python 的“while”循环中使用“and”表达式
【发布时间】: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:我正要写那个! :)

标签: python list while-loop int expression


【解决方案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!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2018-03-10
    • 2015-04-02
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多