[Python] Списковые включения: кто может это объяснить?
>>> import math
>>> sin, cos, tan = [lambda x: fun(math.radians(x)) for fun in math.sin, math.cos, math.tan]
>>> sin(30), cos(30), tan(30)
(0.5773502691896257, 0.5773502691896257, 0.5773502691896257)
>>> asin, acos, atan = [lambda x: math.degrees(fun(x)) for fun in math.asin, math.acos, math.atan]
>>> asin(.5), acos(.5), atan(.5)
(26.56505117707799, 26.56505117707799, 26.56505117707799)
>>> asin(30), sin(30)
(88.09084756700362, 0.48234790710102493)
>>> sin1, cos1, tan1 = [lambda x: fun(math.radians(x)) for fun in math.sin, math.cos, math.tan]
>>> sin(30), cos(30), tan(30)
(0.5773502691896257, 0.5773502691896257, 0.5773502691896257)
>>> sin1(30), cos1(30), tan1(30)
(0.5773502691896257, 0.5773502691896257, 0.5773502691896257)
>>> asin(.5), acos(.5), atan(.5)
(31.300827005537716, 31.300827005537716, 31.300827005537716)
>>>
>>> # ну что за хрень та?
...
>>> sin = lambda x: math.sin(math.radians(x))
>>> sin(30)
0.49999999999999994
>>>
на двух машинах повторяется:
Python 2.7.1 (r271:86832, Apr 12 2011, 16:16:18)
[GCC 4.6.0 20110331 (Red Hat 4.6.0-2)] on linux2
Python 2.5.2 (r252:60911, Apr 21 2008, 11:12:42)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2