2

在我的程序中,我有一个列表,我想要一个循环,直到列表的所有列都等于 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:

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

4

2 回答 2

5

括号中的表达式被评估为单个值: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):
于 2013-03-31T22:26:26.983 回答
0

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

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

确保 while 循环通过增加 row[column] 来终止,因此它最终会导致 while 测试失败。

于 2013-03-31T22:52:09.243 回答