Is any() evaluated lazily?

前端 未结 7 535
别跟我提以往
别跟我提以往 2021-01-18 03:59

I am writing a script in which i have to test numbers against a number of conditions. If any of the conditions are met i want to return True an

7条回答
  •  没有蜡笔的小新
    2021-01-18 04:28

    Yes, and here is an experiment that shows it even more definitively than your timing experiment:

    import random
    
    def some(x):
        print(x, end = ', ')
        return random.random() < 0.25
    
    for i in range(5):
        print(any(some(x) for x in range(10)))
    

    typical run:

    0, 1, 2, True
    0, 1, True
    0, True
    0, 1, 2, 3, True
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, False
    

提交回复
热议问题