I want to generate a list of random integer within a range:
from random import randint lower = 0 upper = 20 length = 10 random_array = [randint(lower, upper) for _ in range(length)] I don't think it is elegant and I come up with another solution:
random_array = [randint(lower, upper)] * length But it generate a list of identical integers.
It might be that randint is executed before list.
I try putting off randint with lambda:
random_array = [(lambda: randint(lower, upper))()] * length but fail.
So I want to know if it's possible to delay the evaluation of items (randint in this case) and then have it triggered once the list is assembled?
[(lambda: randint(lower, upper))()] * lengthmore elegant than[randint(lower, upper) for _ in range(length)]?