哪个更好:使用“ iter”或“ while”进行循环?

时间:2018-10-29 03:35:05

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

我知道连续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

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

2 个答案:

答案 0 :(得分:4)

好吧,如果您要使用for版本,至少不要lambda使其难看:

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

答案 1 :(得分: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之外的其他“特殊”输入命令,将变得很容易。