рд╣рд╛рдп, рд╣реИрдмреНрд░ред рдЕрдХреНрд╕рд░ рдЬрдм рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╡рд╛рд▓ рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рд╕реВрдЪреА рд╕рдорд╛рд╡реЗрд╢рди (рд╕реВрдЪреА рд╕рдордЭ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рд▓реНрд▓рд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ, рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ, рдФрд░ рдпрд╣ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреЗрд╣рддрд░ рд╣реИред
рд╕реВрдЪреА рдХреА рд╕рдордЭ
рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрдВрддреНрд░ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕рдХрд╛ рдПрдХ рд╣реА рдХрд╛рдо рд╣реИ - рд╕реВрдЪреА рдмрдирд╛рдирд╛ред рд╕реВрдЪреА рд╕рдорд╛рд╡реЗрд╢рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ (рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ) рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред
0 рд╕реЗ 9 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪреА рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
squares = [x*x for x in range(10)]
рдкрд░рд┐рдгрд╛рдо:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
рдирдХреНрд╢рд╛
рдорд╛рдирдЪрд┐рддреНрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯред рдПрдХ рдЬрдирд░реЗрдЯрд░ (рдкрд╛рдпрдерди 3.x) рдпрд╛ рдПрдХ рд╕реВрдЪреА (рдкрд╛рдпрдерди 2.x) рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдореИрдВ рдкрд╛рдпрдерди 3 рдЪреБрдиреВрдВрдЧрд╛ред
0 рд╕реЗ 9 рддрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
squares = list(map(lambda x: x*x, range(10)))
рдкрд░рд┐рдгрд╛рдо:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛
рдмрд┐рдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг
рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо 0 рд╕реЗ 9,999,999 рддрдХ рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
python -m timeit -r 10 "[x*x for x in range(10000000)]" python -m timeit -r 10 "list(map(lambda x: x*x, range(10000000)))"
рдкрд░рд┐рдгрд╛рдо:
1 loop, best of 10: 833 msec per loop 1 loop, best of 10: 1.22 sec per loop
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
рд╕реВрдЪреА рдмреЛрдз рд╡рд┐рдзрд┐ рд▓рдЧрднрдЧ 32% рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЕрд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкреВрд░реНрдг рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди "рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ"ред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд▓реИрдореНрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрдЧ рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рд╕реВрдЪреА рд╕рдордЭ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдБ
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдЕрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реЛрдЧреА:
python -m timeit -r 10 -s "def pow2(x): return x*x" "[pow2(x) for x in range(10000000)]" python -m timeit -r 10 -s "def pow2(x): return x*x" "list(map(pow2, range(10000000)))"
рдкрд░рд┐рдгрд╛рдо:
1 loop, best of 10: 1.41 sec per loop 1 loop, best of 10: 1.21 sec per loop
рдЗрд╕ рдмрд╛рд░ рд╕реНрдерд┐рддрд┐ рдЙрд▓рдЯ рд╣реИред
рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐ 14% рддреЗрдЬ рдереАред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВред рджреЛрдиреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЪреБрдирдирд╛ рд╣реИ?
рдиреАрдЪреЗ рд╕рд╣реА рд╡рд┐рдзрд┐ рдЪреБрдирдиреЗ рдХрд╛ рдирд┐рдпрдо рд╣реИ:

рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛!
рдирдХреНрд╢рд╛ "рд╕реБрд░рдХреНрд╖рд┐рдд" рд╣реИ?
рдХрдИ рд▓реЛрдЧ
рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реВрдЪреА рд╕рдордЭ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
symbols = ['a', 'b', 'c'] values = [1, 2, 3] for x in symbols: print(x) squared = [x*x for x in values]
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
a 3 b 3 c 3
рдЕрдм
рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
symbols = ['a', 'b', 'c'] values = [1, 2, 3] for x in symbols: print(x) squared = map(lambda x: x*x, values)
рдирд┐рд╖реНрдХрд░реНрд╖:
a a b b c c
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдиреЛрдЯрд┐рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рдпрдерди 2 рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреВрд╕рд░реЗ рдЕрдЬрдЧрд░ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдЪрд░ рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд╛рдпрдерди 3 рдореЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗред рдпрд╣ рднреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреЗрд╡рдХреВрдл рдЧрд▓рддреА рд╣реИ рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддреА рдХрднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдиреЗ рдмрд╕ рджреВрд╕рд░реЗ рдмреНрд▓реЙрдХ рд╕реЗ рдПрдХ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддреА рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛рдУрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рддреБрд▓рдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдЪреНрдЫреА рд╣реИред
- рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ), рддреЛ рдЖрдкрдХреЛ рдирдХреНрд╢реЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░, рдЖрдк рдЬреЗрдирд░реЗрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА (рдкрд╛рдпрдерди 3) рдХреЛ рдмрдЪрд╛рддреЗ рд╣реБрдП, рдкрд╛рдпрдерди 2 рдореЗрдВ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдХреНрд╢рд╛ рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ)ред
- рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реВрдЪреА рд╕рдордЭ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИред
рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред