Почему список lambda выражений возвращает одинаковые числа?
Все сгенерированные лямбды используют ссылку на переменную из включения. К моменту, их вызова включение уже завершило свою работу и x имеет значение последней итерации - 2. Чтобы избежать такого поведения, нужно замкнуть значение переменной: l1 = [lambda x=x: x for x in range(3)]
А обойти можно было:l1=[eval('lambda:%d'%x) for x in range(3)]
Они конечно любят всякую ерунду спрашивать.