é¢æ°åããã°ã©ãã³ã°ã«ã€ããŠè©±ããšãå€ãã®å Žåãå€ãã®ãé¢æ°åãç¹æ§ãäžãããå§ããŸãã äžå€ããŒã¿ãäžæµã®é¢æ°ãããã³æ«å°Ÿååž°ã®æé©åã ãããã¯ãæ©èœçãªããã°ã©ã ã®äœæã«åœ¹ç«ã€èšèªæ©èœã§ãã 圌ãã¯ããããã³ã°ãã«ãªãŒåãããã³é«éé¢æ°ã®äœ¿çšã«èšåããŠããŸãã ãããã¯ãæ©èœã³ãŒããèšè¿°ããããã«äœ¿çšãããããã°ã©ãã³ã°ææ³ã§ãã 圌ãã¯ã䞊ååãé
延èšç®ãããã³æ±ºå®è«ã«èšåããŠããŸãã ãããã¯ãæ©èœããã°ã©ã ã®å©ç¹ã§ãã
ãã³ããŒã€ã³ æ©èœã³ãŒãã¯ãå¯äœçšããªããšãã1ã€ã®ããããã£ã«ãã£ãŠåºå¥ãããŸãã çŸåšã®é¢æ°å€ã®ããŒã¿ã«äŸåãããé¢æ°å€ã®ããŒã¿ãå€æŽããŸããã ä»ã®ãã¹ãŠã®ãããããã£ãã¯ããããæšæž¬ã§ããŸãã
æ©èœããªãæ©èœïŒ
a = 0 def increment1(): global a a += 1
æ©èœçæ©èœïŒ
def increment2(a): return a + 1
ãªã¹ãã調ã¹ã代ããã«ãmapãšreduceã䜿çšããŸã
å°å³
é¢æ°ãšããŒã¿ã»ãããåãå
¥ããŸãã æ°ããã³ã¬ã¯ã·ã§ã³ãäœæããåããŒã¿é
ç®ã§æ©èœãå®è¡ããæ°ããã³ã¬ã¯ã·ã§ã³ã«æ»ãå€ãè¿œå ããŸãã æ°ããã³ã¬ã¯ã·ã§ã³ãè¿ããŸãã
ååã®ãªã¹ããåãå
¥ããé·ãã®ãªã¹ããè¿ãåçŽãªãããïŒ
name_lengths = map(len, ['', '', '']) print name_lengths
ãã®ãããã¯åèŠçŽ ãäºä¹ããŸãïŒ
squares = map(lambda x: x * x, [0, 1, 2, 3, 4]) print squares
ååä»ãé¢æ°ãåãå
¥ããŸããããã©ã ããä»ããŠå®çŸ©ãããå¿åé¢æ°ãåããŸãã ã©ã ããã©ã¡ãŒã¿ãŒã¯ãã³ãã³ã®å·ŠåŽã«å®çŸ©ãããŸãã é¢æ°ã®æ¬äœã¯å³åŽã«ãããŸãã çµæã¯æé»çã«è¿ãããŸãã
次ã®äŸã®æ©èœããªãã³ãŒãã¯ãååã®ãªã¹ããååŸããããããã©ã³ãã ãªããã¯ããŒã ã«çœ®ãæããŸãã
import random names = ['', '', ''] code_names = ['', '', ''] for i in range(len(names)): names[i] = random.choice(code_names) print names
ã¢ã«ãŽãªãºã ã¯ãåãããã¯ããŒã ãç°ãªãã·ãŒã¯ã¬ãããšãŒãžã§ã³ãã«å²ãåœãŠãããšãã§ããŸãã ããŸãããã°ãããã¯ç§å¯ã®ä»»åäžã«åé¡ã®åå ã«ãªããªãã§ãããã
ãããã䜿çšããŠãããæžãæããŸãã
import random names = ['', '', ''] secret_names = map(lambda x: random.choice(['', '', '']), names)
æŒç¿1 ã mapã䜿çšããŠæ¬¡ã®ã³ãŒããæžãçŽããŠãã ããã å®åã®ãªã¹ããååŸããããä¿¡é Œæ§ã®é«ãæ¹æ³ã䜿çšããŠããã¯ããŒã ã«çœ®ãæããŸãã
names = ['', '', ''] for i in range(len(names)): names[i] = hash(names[i]) print names
ç§ã®è§£æ±ºçïŒ names = ['', '', ''] secret_names = map(hash, names)
æžãã
Reduceã¯ãé¢æ°ãšã¢ã€ãã ã®ã»ãããåãå
¥ããŸãã ãã¹ãŠã®ã¢ã€ãã ãçµã¿åãããŠååŸããå€ãè¿ããŸãã
åçŽãªreduceã®äŸã ã»ããå
ã®ãã¹ãŠã®ã¢ã€ãã ã®åèšãè¿ããŸãã
sum = reduce(lambda a, x: a + x, [0, 1, 2, 3, 4]) print sum
xã¯çŸåšã®ã¢ã€ãã ã§ãããããããªãŒã§ãã ããã¯ãã©ã ããåã®æ®µèœã§è¿ãå€ã§ãã reduceïŒïŒã¯ããã¹ãŠã®å€ãå埩åŠçããaãšxã®çŸåšã®å€ã§åã©ã ãã«å¯ŸããŠå®è¡ãã次ã®å埩ã®çµæãaã§è¿ããŸãã
ããããæåã®å埩ã§ã¯äœãåãã§ããïŒ ã³ã¬ã¯ã·ã§ã³ã®æåã®èŠçŽ ãšçãããreduceïŒïŒã¯2çªç®ã®èŠçŽ ããå§ãŸããŸãã ã€ãŸããæåã®xã¯ã»ããå
ã®2çªç®ã®ã¢ã€ãã ãšçãããªããŸãã
次ã®äŸã§ã¯ããcaptainããšããåèªãè¡ã®ãªã¹ãã«è¡šç€ºãããé »åºŠãèæ
®ããŠããŸãã
sentences = [' ', ' ', ' , '] cap_count = 0 for sentence in sentences: cap_count += sentence.count('') print cap_count
reduceã䜿çšããåãã³ãŒãïŒ
sentences = [' ', ' ', ' , '] cap_count = reduce(lambda a, x: a + x.count(''), sentences, 0)
ãããŠãaã®åæå€ã¯ã©ãããæ¥ãŸããïŒ æåã®è¡ã®ç¹°ãè¿ãæ°ããèšç®ããããšã¯ã§ããŸããã ãããã£ãŠãreduceïŒïŒé¢æ°ã®3çªç®ã®åŒæ°ãšããŠæå®ãããŸãã
ãªãmap and reduceãåªããŠããã®ã§ããïŒ
ãŸããéåžžã¯1è¡ã«åãŸããŸãã
第äºã«ãå埩ã®éèŠãªéšåã§ããã³ã¬ã¯ã·ã§ã³ãæäœãããã³æ»ãå€ã¯ãåžžã«map and reduceãšåãå Žæã«ãããŸãã
第äžã«ãã«ãŒãå
ã®ã³ãŒãã¯ã以åã«å®çŸ©ãããå€æ°ã®å€ãå€æŽãããããã®åŸã«ããã³ãŒãã«åœ±é¿ãäžãããããå¯èœæ§ããããŸãã æ
£äŸã«ãããmapããã³reduceã¯æ©èœããŸãã
第4ã«ãmapãšreduceã¯åºæ¬çãªæäœã§ãã ã«ãŒãã1è¡ãã€èªã¿åãã®ã§ã¯ãªããèªè
ãããããèªèããçµã¿èŸŒã¿ã®è€éãªã¢ã«ãŽãªãºã ãåæžããæ¹ãç°¡åã§ãã
第5ã«ããããã®é¢æ°ã®äŸ¿å©ã§ãããã«å€æŽãããåäœãèš±å¯ããå€ãã®å人ãããŸãã ããšãã°ãfilterãallãanyãããã³findã
æŒç¿2 ïŒmapãreduceãfilterã䜿çšããŠæ¬¡ã®ã³ãŒããæžãæããŸãã ãã£ã«ã¿ãŒã¯é¢æ°ãšã³ã¬ã¯ã·ã§ã³ãåãå
¥ããŸãã é¢æ°ãTrueãè¿ã察象ã®ã³ã¬ã¯ã·ã§ã³ãè¿ããŸãã
people = [{'': '', '': 160}, {' ': '', ' ': 80}, {'name': ''}] height_total = 0 height_count = 0 for person in people: if '' in person: height_total += person[' '] height_count += 1 if height_count > 0: average_height = height_total / height_count print average_height
ç§ã®è§£æ±ºçïŒ people = [{'': '', '': 160}, {' ': '', ' ': 80}, {'name': ''}] heights = map(lambda x: x[''], filter(lambda x: '' in x, people)) if len(heights) > 0: from operator import add average_height = reduce(add, heights) / len(heights)
åœä»€ã§ã¯ãªã宣èšçã«æžã
次ã®ããã°ã©ã ã¯ã3å°ã®è»ã®ã¬ãŒã¹ããšãã¥ã¬ãŒãããŸãã åæç¹ã§ãè»ã¯åé²ãããããªããã®ããããã§ãã ããã°ã©ã ãè»ã§ç§»åãããã¹ã衚瀺ãããã³ã«ã 5ã€ã®ééã®åŸãã¬ãŒã¹ã¯çµäºããŸãã
åºåäŸïŒ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ããã°ã©ã ããã¹ãïŒ
from random import random time = 5 car_positions = [1, 1, 1] while time:
ã³ãŒãã¯å¿
é ã§ãã æ©èœçãªããŒãžã§ã³ã¯å®£èšçã§ã-ããã¯ã©ã®ããã«è¡ãããã¹ããã§ã¯ãªããäœãè¡ãããå¿
èŠãããããèšè¿°ããŸãã
é¢æ°ã䜿çšããŸã
宣èšå¯èœæ§ã¯ãã³ãŒããé¢æ°ã«æ¿å
¥ããããšã§å®çŸã§ããŸãã
from random import random def move_cars(): for i, _ in enumerate(car_positions): if random() > 0.3: car_positions[i] += 1 def draw_car(car_position): print '-' * car_position def run_step_of_race(): global time time -= 1 move_cars() def draw(): print '' for car_position in car_positions: draw_car(car_position) time = 5 car_positions = [1, 1, 1] while time: run_step_of_race() draw()
ããã°ã©ã ãç解ããããã«ãèªè
ã¯ã¡ã€ã³ã«ãŒãã調ã¹ãŸãã ãæéãæ®ã£ãŠããå Žåã¯ãã¬ãŒã¹ã®1ã¹ããããçµãŠçµæã衚瀺ããŸãã ããäžåºŠæéã確èªããŠãã ãããã èªè
ãã¬ãŒã¹ã¹ãããã®ä»çµã¿ãç解ããå¿
èŠãããå Žåãã³ãŒããåå¥ã«èªãããšãã§ããŸãã
ã³ã¡ã³ãã¯äžèŠã§ããã³ãŒãèªäœã説æããŠããŸãã
ã³ãŒããé¢æ°ã«åå²ãããšãã³ãŒããèªã¿ããããªããŸãã ãã®ææ³ã¯é¢æ°ã䜿çšããŸãããã«ãŒãã³ãšããŠã®ã¿äœ¿çšããŸãã 圌ãã¯ã³ãŒããããã¯ããŸãããæ©èœçã«ããŸããã é¢æ°ã¯ãå€ãè¿ãã®ã§ã¯ãªããããããå²ãã³ãŒãã«åœ±é¿ãäžããã°ããŒãã«å€æ°ãå€æŽããŸãã èªè
ãå€æ°ã«ééããå Žåããããã©ãããæ¥ãã®ããèŠã€ããå¿
èŠããããŸãã
ãã®ããã°ã©ã ã®æ©èœããŒãžã§ã³ã¯æ¬¡ã®ãšããã§ãã
from random import random def move_cars(car_positions): return map(lambda x: x + 1 if random() > 0.3 else x, car_positions) def output_car(car_position): return '-' * car_position def run_step_of_race(state): return {'time': state['time'] - 1, 'car_positions': move_cars(state['car_positions'])} def draw(state): print '' print '\n'.join(map(output_car, state['car_positions'])) def race(state): draw(state) if state['time']: race(run_step_of_race(state)) race({'time': 5, 'car_positions': [1, 1, 1]})
çŸåšãã³ãŒãã¯æ©èœçãªé¢æ°ã«åå²ãããŠããŸãã ããã«ã¯3ã€ã®å
åããããŸãã æåã®-å
±æå€æ°ã¯ãããŸããã timeãšcar_positionsã¯raceïŒïŒã«çŽæ¥æž¡ãããŸãã 2çªç®ã¯ãé¢æ°ããã©ã¡ãŒã¿ãŒãåãããšã§ãã 第äžã«ãå€æ°ã¯é¢æ°å
ã§å€åããããã¹ãŠã®å€ãè¿ãããŸãã run_step_of_raceïŒïŒã次ã®ã¹ããããå®è¡ãããã³ã«ã次ã®ã¹ãããã«åã³æž¡ãããŸãã
以äžã«2ã€ã®é¢æ°zeroïŒïŒãšoneïŒïŒã瀺ããŸãã
def zero(s): if s[0] == "0": return s[1:] def one(s): if s[0] == "1": return s[1:]
ãŒãïŒïŒã¯æååsãåããŸãã æåã®æåã0ã®å Žåãæååã®æ®ããè¿ããŸãã ããã§ãªãå Žåã¯ããªãã æåã®æåã1ã®å ŽåãoneïŒïŒã¯åãããšãè¡ããŸãã
rule_sequenceïŒïŒé¢æ°ãæ³åããŠãã ããã æååãšã0åãš1åã®é¢æ°ã§æ§æãããã«ãŒã«é¢æ°ã®ãªã¹ããåãåããŸãã æåã®ã«ãŒã«ãåŒã³åºããŠãæååãæž¡ããŸãã Noneãè¿ãããªãå Žåãè¿ãããå€ãåãåãã次ã®ã«ãŒã«ãåŒã³åºããŸãã ãªã©ãªã©ã Noneãè¿ãããå Žåãrule_sequenceïŒïŒã¯åæ¢ããNoneãè¿ããŸãã ãã以å€ã®å ŽåãæåŸã®ã«ãŒã«ã®æå³ã
å
¥åããã³åºåããŒã¿ã®äŸïŒ
print rule_sequence('0101', [zero, one, zero])
rule_sequenceïŒïŒã®åœä»€åããŒãžã§ã³ïŒ
def rule_sequence(s, rules): for rule in rules: s = rule(s) if s == None: break return s
æŒç¿3 ã ãã®ã³ãŒãã¯ã«ãŒãã䜿çšããŸãã ååž°ã䜿çšããŠå®£èšçã«æžãæããŸãã
ç§ã®è§£æ±ºçïŒ def rule_sequence(s, rules): if s == None or not rules: return s else: return rule_sequence(rules[0](s), rules[1:])
ãã€ãã©ã€ã³ã䜿çšãã
次ã«ããã€ãã©ã€ã³ãšåŒã°ããææ³ã䜿çšããŠãä»ã®çš®é¡ã®ãµã€ã¯ã«ãæžãæããŸãã
次ã®ãµã€ã¯ã«ã§ã¯ãååãééã£ãåç£åœãããã€ãã®ã°ã«ãŒãã®ã¹ããŒã¿ã¹ãå«ãèŸæžãå€æŽããŸãã
bands = [{'name': 'sunset rubdown', 'country': 'UK', 'active': False}, {'name': 'women', 'country': 'Germany', 'active': False}, {'name': 'a silver mt. zion', 'country': 'Spain', 'active': True}] def format_bands(bands): for band in bands: band['country'] = 'Canada' band['name'] = band['name'].replace('.', '') band['name'] = band['name'].title() format_bands(bands) print bands
é¢æ°ããã©ãŒããããã®ååã¯äžè¬çãããŸãã äžè¬ã«ãã³ãŒãã¯ããã€ãã®æžå¿µãåŒãèµ·ãããŸãã 1ã€ã®ãµã€ã¯ã«ã§3ã€ã®ç°ãªãããšãèµ·ãããŸãã ãåœãããŒã®å€ããã«ãããã«å€ãããŸãã ããããåé€ãããååã®æåã®æåã倧æåã«å€æŽãããŸãã ã³ãŒããäœããã¹ãããç解ããããšã¯å°é£ã§ããããããããã©ãããèšãããšã¯å°é£ã§ãã 䜿çšããã¹ããããã³äžŠååã¯å°é£ã§ãã
æ¯èŒããïŒ
print pipeline_each(bands, [set_canada_as_country, strip_punctuation_from_name, capitalize_names])
ãã¹ãŠãã·ã³ãã«ã§ãã ãã«ããŒé¢æ°ã¯äºãã«é£éããŠãããããæ©èœããŠããããã«èŠããŸãã åãçµäº-次ãå
¥åããŸãã æ€èšŒãåå©çšãæ€èšŒã䞊ååãç°¡åã§ãã
pipeline_eachïŒïŒã¯äžåºŠã«1ã€ãã€ã°ã«ãŒããå埩åŠçããset_canada_as_countryïŒïŒãªã©ã®å€æé¢æ°ã«æž¡ããŸãã é¢æ°ããã¹ãŠã®ã°ã«ãŒãã«é©çšããåŸãpipeline_eachïŒïŒã¯ããããããªã¹ããäœæãã次ã®ãªã¹ãã«æž¡ããŸãã
å€æé¢æ°ãèŠãŠã¿ãŸãããã
def assoc(_d, key, value): from copy import deepcopy d = deepcopy(_d) d[key] = value return d def set_canada_as_country(band): return assoc(band, 'country', "Canada") def strip_punctuation_from_name(band): return assoc(band, 'name', band['name'].replace('.', '')) def capitalize_names(band): return assoc(band, 'name', band['name'].title())
ãããããã°ã«ãŒãããŒãæ°ããå€ã«é¢é£ä»ããŸãã å
ã®ããŒã¿ãå€æŽããã«ãããè¡ãã®ã¯é£ãããããassocïŒïŒã§è§£æ±ºããŸãã deepcopyïŒïŒã䜿çšããŠãæž¡ãããèŸæžã®ã³ããŒãäœæããŸãã åé¢æ°ã¯ã³ããŒãå€æãããã®ã³ããŒãè¿ããŸãã
ãã¹ãŠãæ£åžžãªããã§ãã å€æŽããä¿è·ãããå
ã®ããŒã¿ã ãã ããã³ãŒãå
ã§ããŒã¿ãå€æŽã§ããå Žæã¯2ã€ãããŸãã strip_punctuation_from_nameïŒïŒã§ãããããªãã®ååã¯ãå
ã®ååã§replaceïŒïŒãåŒã³åºãããšã§äœæãããŸãã capitalize_namesïŒïŒã§ã¯ãã¿ã€ãã«ïŒïŒãšå
ã®ååã«åºã¥ããŠãæåã®å€§æåã§ååãäœæãããŸãã replaceãštimeãæ©èœããªãå Žåãstrip_punctuation_from_nameïŒïŒwith capitalize_namesïŒïŒã¯æ©èœããŸããã
幞ããªããšã«ããããã¯æ©èœçã§ãã Pythonã§ã¯ãæååã¯äžå€ã§ãã ãããã®é¢æ°ã¯ãæååã®ã³ããŒã§æ©èœããŸãã ããŒããç¥ã«æè¬ããŸãã
Pythonã®æååãšèŸæžïŒãã®å¯å€æ§ïŒã®ãã®å¯Ÿç
§ã¯ãClojureã®ãããªèšèªã®å©ç¹ã瀺ããŠããŸãã ããã§ãããã°ã©ãã¯ããŒã¿ãå€æŽãããã©ãããèããå¿
èŠã¯ãããŸããã å€ãããŸããã
æŒç¿4 ã pipeline_eaché¢æ°ãäœæããŠã¿ãŠãã ããã æäœã®ã·ãŒã±ã³ã¹ã«ã€ããŠèããŠãã ããã ã°ã«ãŒã-é
åã§ã¯ãæåã®å€æé¢æ°ã®ããã«äžåºŠã«1ã€ãã€æž¡ãããŸãã 次ã«ãçµæã®é
åã«ã¯ã2çªç®ã®é¢æ°ã«å¯ŸããŠ1ã€ã®å°ããªãã®ãæž¡ãããŸãã
ç§ã®è§£æ±ºçïŒ def pipeline_each(data, fns): return reduce(lambda a, x: map(x, a), fns, data)
çµæãšããŠã3ã€ã®å€æé¢æ°ã¯ãã¹ãŠãã°ã«ãŒãã®ç¹å®ã®ãã£ãŒã«ããå€æŽããŸãã callïŒïŒã䜿çšããŠããã®ããã®æœè±¡åãäœæã§ããŸãã é¢æ°ãšããããé©çšãããããŒãåãå
¥ããŸãã
set_canada_as_country = call(lambda x: 'Canada', 'country') strip_punctuation_from_name = call(lambda x: x.replace('.', ''), 'name') capitalize_names = call(str.title, 'name') print pipeline_each(bands, [set_canada_as_country, strip_punctuation_from_name, capitalize_names])
ãŸãã¯ãèªã¿ããããç ç²ã«ããŸãã
print pipeline_each(bands, [call(lambda x: 'Canada', 'country'), call(lambda x: x.replace('.', ''), 'name'), call(str.title, 'name')])
åŒã³åºãã®ã³ãŒãïŒïŒïŒ
def assoc(_d, key, value): from copy import deepcopy d = deepcopy(_d) d[key] = value return d def call(fn, key): def apply_fn(record): return assoc(record, key, fn(record.get(key))) return apply_fn
ããã§äœãèµ·ãã£ãŠããŸããïŒ
äžã åŒã³åºãã¯é«éé¢æ°ã§ã å¥ã®é¢æ°ãåŒæ°ãšããŠåãåããé¢æ°ãè¿ããŸãã
äºã apply_fnïŒïŒã¯å€æé¢æ°ã«äŒŒãŠããŸãã ãšã³ããªïŒã°ã«ãŒãïŒãååŸããŸãã ã¬ã³ãŒã[ããŒ]ã®å€ãæ€çŽ¢ããŸãã fnãåŒã³åºããŸãã çµæãã¬ã³ãŒãã®ã³ããŒã«å²ãåœãŠãŠè¿ããŸãã
äžã åŒã³åºãèªäœã¯äœãããŸããã ãã¹ãŠã®äœæ¥ã¯apply_fnïŒïŒã«ãã£ãŠè¡ãããŸãã pipeline_eachïŒïŒã®äŸã§ã¯ãapply_fnïŒïŒã®1ã€ã®ã€ã³ã¹ã¿ã³ã¹ããcountryãããCanadaãã«èšå®ããŸãã å¥ã®-æåã®æåã倧æåã«ããŸãã
4ã apply_fnïŒïŒã€ã³ã¹ã¿ã³ã¹ãå®è¡ããããšãfnããã³ããŒé¢æ°ã¯ã¹ã³ãŒãå
ã§äœ¿çšã§ããªããªããŸãã ãããã¯apply_fnïŒïŒåŒæ°ãŸãã¯ããŒã«ã«å€æ°ã§ã¯ãããŸããã ããããããããžã®ã¢ã¯ã»ã¹ã¯å¯èœã«ãªããŸãã é¢æ°ãå®çŸ©ãããšããéããå€æ°ãžã®åç
§ãä¿åããŸãâå€æ°ã¯é¢æ°ã®å€éšã§å®çŸ©ãããå
éšã§äœ¿çšãããŸãã é¢æ°ãéå§ããããšãå€æ°ã¯ããŒã«ã«éã§æ€çŽ¢ããã次ã«åŒæ°éã§æ€çŽ¢ããã次ã«éãããã®ãžã®åç
§éã§æ€çŽ¢ãããŸãã fnãšããŒããããŸãã
5ã é話äžã®ã°ã«ãŒãã«é¢ããèšåã¯ãããŸããã ããã¯ãåŒã³åºãããã€ãã©ã€ã³ã®å
容ã«é¢ä¿ãªãããã€ãã©ã€ã³ã®äœæã«äœ¿çšã§ããããã§ãã ç¹ã«ãé¢æ°åããã°ã©ãã³ã°ã¯ãäœæ²ãšåå©çšã«é©ããäžè¬çãªé¢æ°ã®ã©ã€ãã©ãªãæ§ç¯ããŸãã
ããã§ããŸããã ã¯ããŒãžã£ãé«éé¢æ°ãããã³ã¹ã³ãŒãã¯ãã¹ãŠããã€ãã®æ®µèœã«ãããŸãã ã¯ãããŒãšäžç·ã«ãè¶ã飲ãããšãã§ããŸãã
ãããã®ã°ã«ãŒãã®åŠçããã1ã€æ®ã£ãŠããŸãã ååãšåœãé€ããã¹ãŠãåé€ããŸãã Extract_name_and_countryïŒïŒé¢æ°ïŒ
def extract_name_and_country(band): plucked_band = {} plucked_band['name'] = band['name'] plucked_band['country'] = band['country'] return plucked_band print pipeline_each(bands, [call(lambda x: 'Canada', 'country'), call(lambda x: x.replace('.', ''), 'name'), call(str.title, 'name'), extract_name_and_country])
extract_name_and_countryïŒïŒã¯ãpluckïŒïŒãšåŒã°ããäžè¬åããã圢åŒã§èšè¿°ã§ããŸãã 次ã®ããã«äœ¿çšãããŸãã
print pipeline_each(bands, [call(lambda x: 'Canada', 'country'), call(lambda x: x.replace('.', ''), 'name'), call(str.title, 'name'), pluck(['name', 'country'])])
æŒç¿5 ã pluckã¯ãã¬ã³ãŒãããæœåºããããŒã®ãªã¹ããåãå
¥ããŸãã æžããŠã¿ãŠãã ããã ããã¯é«æ¬¡é¢æ°ã§ãã
ç§ã®è§£æ±ºçïŒ def pluck(keys): def pluck_fn(record): return reduce(lambda a, x: assoc(a, x, record[x]), keys, {}) return pluck_fn
ãããŠä»äœïŒ
æ©èœçãªã³ãŒãã¯åŸæ¥ã®ã³ãŒããšããåããŸãã ãã®èšäºããã®å€æã¯ãã©ã®èšèªã§ã䜿çšã§ããŸãã ã³ãŒããè©ŠããŠã¿ãŠãã ããã
ããŒã·ã£ãããã£ã¢ããŽã¡ã·ã£ã«ã€ããŠèŠããŠãããŠãã ããã ãªã¹ãã®å埩ããããã«å€æããŠåæžããŸãã
ã¬ãŒã¹ãèŠããŠãã ããã ã³ãŒããé¢æ°ã«åå²ããããããæ©èœçã«ããŸãã ã«ãŒããååž°ã«å€ããŸãã
ã°ã«ãŒããèŠããŠãããŠãã ããã äžé£ã®æäœããã€ãã©ã€ã³ã«å€æããŸãã