рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдПрдХ рдФрд░ рд▓реЗрдЦ рдирд╣реАрдВ

рдЕрдм рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреА рдкреБрд░рд╛рдиреА рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдУрдУрдкреА рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓, рд▓рд┐рд╕реНрдк рдпрд╛ рдПрд░рд▓рдВрдЧ рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдирд╣реАрдВред рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдорд╛рди рдмрд╣реБ-рдкреНрд░рддрд┐рдорд╛рди рднрд╛рд╖рд╛рдУрдВ рдХреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрд░реНрдпреБрдХреНрдд рднрд╛рд╖рд╛рдПрдВ рдЕрдХреНрд╕рд░ рдЗрд╕ рдЖрдХреНрд░рд╛рдордХ рдореЗрдВ рдЭрдВрдбреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ рдПрдХ рд╣реА рдирд╕ рдореЗрдВ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рдФрд░ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЕрдЬрдЧрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЪрд╛рд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдзреНрдпрд╛рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдкрд░ рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдлрдиреНрдиреА рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдХрдИ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред

рдбреЗрдЯрд╛ рдХрд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдлрд╝рдиреНрд╕реА рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рд╣реБрдЖ рдФрд░, рдХрдо рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рдлрд╝рдВрдХреНрд╢рди, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдХреБрдЫ (рдпрд╛ рдХрдИ) рдЙрджрд╛рд╣рд░рдг рддреБрдЪреНрдЫ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдХрд┐ рдРрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд┐рддрдирд╛ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдХрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛, рдЬреЛ рдкрд╛рдЗрдереЛрдирд┐рдХ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреА рд╕рд░рд▓рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдирд┐рд░рдВрддрд░ рдкреНрд░рд╢реНрди рдЙрдард╛рддреЗ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред

рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░


1. рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдорд┐рд▓рд╛рдПрдВред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛:

from operator import concat reduce(concat, list_of_lists) #  : sum(list_of_lists, []) #  : from itertools import chain list(chain.from_iterable(list_of_lists)) 

рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдпрд╛ рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрд╢рд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдЖрдпрд╛рдд рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓, рдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреЗ рд╣реИрдВ: рдХреЗрд╡рд▓ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рд╕рд╛рде tuples рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдкреНрд░рдХрд╛рд░ рдЖрдПрдЧрд╛ред рдЕрдВрддреНрдпреЗрд╖реНрдЯрд┐ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 from funcy import cat cat(list_of_lists) 

cat() рд╕реВрдЪрд┐рдпреЛрдВ, рдЯреБрдкрд▓реНрд╕, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддред рдпрджрд┐ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mapcat() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 from funcy import mapcat mapcat(str.splitlines, bunch_of_texts) 

рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЧреНрд░рдВрдереЛрдВ рдореЗрдВ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдЧрд╛ред рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ: icat() рдФрд░ imapcat() ред

2. рдХрдИ рд╢рдмреНрджрдХреЛрд╢ рдЬреЛрдбрд╝реЗрдВред рдЕрдЬрдЧрд░ рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╣реИрдВ:

 d1.update(d2) #  d1 dict(d1, **d2) #   > 2  d = d1.copy() d.update(d2) 

рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрддрд╛ рдерд╛ рдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рдореБрдбрд╝реЗ рд╣реБрдП рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ? рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 from funcy import merge, join merge(d1, d2) merge(d1, d2, d3) join(sequence_of_dicts) 

рд▓реЗрдХрд┐рди merge() рдФрд░ join() рди рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рд╢рдмреНрджрдХреЛрд╢, рд╢рдмреНрджрдХреЛрд╢, рд╕реЗрдЯ, рд╕реВрдЪрд┐рдпрд╛рдВ, рдЯреНрдпреВрдкрд▓, рдкреБрдирд░рд╛рд╡реГрддреНрдд, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддрд╛рд░ред

3. рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 m = re.search(some_re, s) if m: actual_match = m.group() #  m.group(i),  m.groups() ... 

рдорд╕реНрддреА рдХреЗ рд╕рд╛рде, рдпрд╣ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

 from funcy import re_find actual_match = re_find(some_re, s) 

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 from funcy import re_finder, re_all, partial, mapcat #      map(re_finder('\d+'), words) #  ini  (re_finder()      > 1 ) dict(imap(re_finder('(\w+)=(\w+)'), ini.splitlines())) #     (    )      mapcat(partial(re_all, r'\d+'), bunch_of_strings) 

рдЖрдпрд╛рдд рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╛рдЪрди


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдореИрдВ рдХрд┐рд╕реА рднреА рдЙрдк-рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдлрд╝рдВрд╕реА рд╕реЗ рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдореИрдВрдиреЗ рдЬреЛ рдХрд╛рд░рдг рддрдп рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рд╣реИ; рдореЗрд░реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд╛рдК рд╣реЛрдирд╛ рдЙрдмрд╛рдК рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдлрд╝реНрд░реАрд╕реА.рдХреЛрд▓реНрд╕ рдпрд╛ рдлрд╝рдВрд╕реА.рд╕реЗрдХ рд╕реЗ рдХрд╣рд╛рдБ рдЖрдпрд╛рдд рдХрд░реЗрдВ (рдпрд╣ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдЖрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдмрд┐рдирд╛ рдХреЛрдИ рд╕рд╛рдорд╛рди рд╣реИред

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдХреЗрд╡рд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ:

 from funcy import * 

рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрдХрд░реНрд╖рдг рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ рдЬреЛ рдХрд┐ рдЖрдирдВрдж рд▓рд╛рддрд╛ рд╣реИ, рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдЦреИрд░, рдЕрдм рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЕрдЪреНрдЫреЗ рдЭреВрда рдХрд╣рд╛рдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд╛рд░ рд╕реЗ рдЖрдпрд╛рдд рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмрд╛рддреЗрдВ


рд╣рдордиреЗ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рд▓рд┐рдП рд╣реИрдВ - re_finder() рдФрд░ partial() ред рдпрд╣ рдЬреЛрдбрд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ re_finder() рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдПрдХ рдЖрдВрд╢рд┐рдХ re_find() рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬреЛ map() рдореЗрдВ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ map() рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, filter() рд╕рд╛рде filter() рдпрд╣ re_tester() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:

 #      is_private = re_tester('^_') filter(is_private, dir(some_obj)) 

рдорд╣рд╛рди, рд╣рдо рдХреБрдЫ рд╡рд┐рдзреЗрдпрдХреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ is_private() , рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:

 is_special = re_tester('^__.+__$') is_const = re_tester('^[A-Z_]+$') filter(...) 

рд▓реЗрдХрд┐рди, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдирд┐рдЬреА рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреБрдЫ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзреЗрдп рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╢рд╛рдорд┐рд▓ рд╣реИ? рдЖрд╕рд╛рди:

 is_public = complement(is_private) is_private_const = all_fn(is_private, is_const) either_const_or_public = any_fn(is_const, is_public) 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИ рдЬреЛ filter() рдкреВрд░рдХ filter() :

 remove(is_private, ...) #  ,  filter(is_public) 

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рднреА рдиреЗ рдЕрдкрдиреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднреВрдЦ рдХреЛ рдмреБрдЭрд╛ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдХрдо рд╕рд╛рд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рдХрд╛ рд╡рд░реНрдгрди рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рд╣реИ, рдлрд╝рдВрд╕реАрдХрд░рдг рднреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЖрдзрд╛рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ walk() рдФрд░ select() , рдЬреЛ map() рдФрд░ filter() , рд▓реЗрдХрд┐рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдП рд░рдЦреЗрдВ:

 walk(inc, {1, 2, 3}) # -> {2, 3, 4} walk(inc, (1, 2, 3)) # -> (2, 3, 4) #        - swap = lambda (k, v): (v, k) walk(swap, {1: 10, 2: 20}) # -> {10: 1, 20: 2} select(even, {1, 2, 3, 10, 20}) # -> {2, 10, 20} select(lambda (k, v): k == v, {1: 1, 2: 3}) # -> {1: 1} 

рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдпрд╣ рдЬреЛрдбрд╝реА рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ: walk_keys(), walk_values(), select_keys(), select_values() :

 #       select_keys(is_public, instance.__dict__) #      select_values(bool, some_dict) 

рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛: silent() - рд▓рд┐рдкрдЯреЗ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЧрдП рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рджрдмрд╛ рджреЗрддрд╛ рд╣реИ, None рд╡рд╛рдкрд╕ None ; compact() - рд╕рдВрдЧреНрд░рд╣ рд╕реЗ None рдореВрд▓реНрдп None рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ; walk_values() - рдкрд╛рд░рд┐рдд рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ walk_values() рдХрд░рддреЗ рд╣реИрдВ, рдкрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд░реЗрдЦрд╛ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ:

 compact(walk_values(silent(int), request_dict)) 

рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░


рдУрд╣! рд╣рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореБрдЭреЗ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдКрдкрд░ рдХрд┐рдпрд╛ред рдЕрдм рд╣рдо рдмрд╛рдВрдЯреЗрдВрдЧреЗ рдФрд░ рд╕рдореВрд╣ рдмрдирд╛рдПрдВрдЧреЗ:

 #   URL   absolute, relative = split(re_tester(r'^http://'), urls) #     group_by(lambda post: post.category, posts) 

рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдлреНрд▓реИрдЯ рдбреЗрдЯрд╛ рд▓реЗ рд▓реАрдЬрд┐рдП:

 #       dict(partition(2, flat_list_of_pairs)) #     {id: (name, password) for id, name, password in partition(3, users)} # ,     assert all(prev + 1 == next for prev, next in partition(2, 1, versions)): #    for chunk in chunks(CHUNK_SIZE, lots_of_data): process(chunk) 

рдФрд░ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдг, рд╕рд┐рд░реНрдл рдвреЗрд░ рдХреЗ рд▓рд┐рдП:

 #     for line, prev in with_prev(text.splitlines()): if not prev: print ' ', print line #     1611  where(plays, author="Shakespeare", year=1611) # => [{"title": "Cymbeline", "author": "Shakespeare", "year": 1611}, # {"title": "The Tempest", "author": "Shakespeare", "year": 1611}] 


рд╕рд┐рд░реНрдл рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ


рд╢рд╛рдпрдж рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреНрд▓реЛрдЬрд░ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░.рдЬреЗрдПрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рд╢реЗрдХреНрд╕рдкрд┐рдпрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдлрдЯ рдЧрдпрд╛ рд╣реИ) - рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЗрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдмрд╣реБрдд рдкреНрд░реЗрд░рдгрд╛ рд▓реАред рдЙрд╕реА рд╕рдордп, рдореИрдВрдиреЗ рдкрд╛рдпрдерди рд╢реИрд▓реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕реНрдерд┐рд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд╣реАрдВ рднреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХрд╛ рдмрд▓рд┐рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдирдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред

рдФрд░ рдПрдХ рдФрд░ рд╕реЛрдЪрд╛ред рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╢рд╛рдпрдж рд╣реА рдХрднреА рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдФрд░ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╢рдмреНрдж рд╣реИрдВред рд╣рдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рд╢рдмреНрдж рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рднрд╛рд╖рд╛ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдВрддреНрдпреЗрд╖реНрдЯрд┐ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ, рдЖрд╡реЗрджрдиреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдЬрдЧрд░ рд╡рд┐рд╕реНрддрд╛рд░, рд╕рд╛рде рд╣реА рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдпрд╛ jQuery - рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рд░ рдХреЛрдИ рдЬреЛ рдЕрдкрдиреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ ред

Source: https://habr.com/ru/post/In174619/


All Articles