【发布时间】:2011-10-01 15:32:41
【问题描述】:
我刚刚遇到了这段代码
while 1:
line = data.readline()
if not line:
break
#...
并想,必须有更好的方法来做到这一点,而不是使用break 的无限循环。
所以我尝试了:
while line = data.readline():
#...
很明显,出现了错误。
有什么方法可以避免在这种情况下使用break?
编辑:
理想情况下,您应该避免说两次readline...恕我直言,重复甚至比break 更糟糕,尤其是在语句很复杂的情况下。
【问题讨论】:
-
虽然这是一个很好的问题,我认为
for line in data解决方案非常适合这个特定问题,但我认为while True: ... break成语没有任何问题。不要害怕它。 :-) -
这些答案提供了在 while 循环的条件下赋值的替代方法,但实际上并没有回答这个问题:有没有办法在 while 循环中进行赋值?我遇到了同样的问题,试图做 while (character = string[i]): I know for-loop 是迭代字符串的更好方法,但我的条件是实际上比这复杂得多,我想将这个赋值作为条件中“或”的右侧。
-
@KirkStrauser break 结构的问题在于,它使用四行来表达某些东西,而其他语言只需一行就可以做到。然而,它做正确的事。到目前为止给出的答案都没有提供更好的通用解决方案。它们要么只使用迭代器,要么重复赋值,这比 break 版本的额外三行代码更糟糕。
标签: python while-loop variable-assignment