使用Python中的while循环同时检索和检查值

时间:2017-10-24 18:37:36

标签: python loops while-loop

当我使用C ++语言编程时,我经常使用以下while循环模式。

while ((Data data = GetNewData()) != END) {
  // Do some processing
  ProcessData(data);
}

我们如何在Python中做同样的事情?似乎以下情况不起作用。

while (data = GetNewData()) != END:
  # Do some processing
  ProcessData(data)

然后我能想到的另一个选择是:

while 1:
  data = GetNewData()
  if data == END:
    break
  # Do some processing using data
  ProcessData(data)

但上面看起来并不整洁。有人能提出一个好方法吗?

1 个答案:

答案 0 :(得分:2)

在Python中,赋值是statement, not an expression,这就是

的原因
while (data = GetNewData()) != END:
    # Do some processing
    ProcessData(data)

不起作用。 (data = GetNewData())不能用作值。

相反,您可以使用iter

for data in iter(GetNewData, END):
    # Do some processing
    ProcessData(data)

循环将在每次迭代时调用GetNewData(),并将值分配给data,除非它等于END。虽然这种语法绝对不像C ++那样直观,但它确实消除了=替换==的错误,反之亦然。