【问题标题】:Which is better: `iter` or `while` for looping?哪个更好:`iter` 或 `while` 用于循环?
【发布时间】:2019-04-01 23:11:18
【问题描述】:

我知道有两种方法可以持续input 直到特定条件。

一个是while

a=input()
while a!='a':
    a=input()

另一个是iter:

a=input()
for i in iter(lambda: a,'a'):
    a=input()

正如 Nosklo 所说,更好:

for i in iter(input,'a'):
    pass

我只是想知道哪个更好(首选)。

【问题讨论】:

  • 如果您(或其他人)希望稍后翻译成其他语言,则首选第一个

标签: python python-3.x loops while-loop


【解决方案1】:

好吧,如果你要使用for版本,至少不要lambda它丑:

for a in iter(input, 'a'):
    ....

【讨论】:

  • for a in ... 甚至
【解决方案2】:

我不知道哪个会被官方“首选”,但我个人更喜欢第一个,因为我可以阅读它,并且它的作用立即显而易见。我也觉得它通常更 Pythonic。 (“显式优于隐式。”)

我不喜欢的一件事是input() 的重复。所以如果是我,我可能会这样写:

while True:
    a = input()
    if a=='a':
        break

或者这个:

finished = False
while not finished:
    a = input()
    if a=='a':
        finished = True

虽然这些版本不如基于iter 的版本简洁,但它们更易于阅读,尤其是在您不经常使用iter() 的情况下。它们也更灵活,因为如果您将来最终需要这样做,可以很容易地添加除 a 之外的其他“特殊”输入命令。

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2012-06-23
    • 2014-01-16
    • 2012-10-21
    • 2016-06-03
    • 2014-10-14
    相关资源
    最近更新 更多