
ç§ã®ãµã€ã¯ã«ã®æåŸã®éšåã¯ãã³ã¬ã¯ã·ã§ã³ã®æäœã«åå ããŸããã ãã®èšäºã¯ç¬ç«ããŠããã以åã®èšäºã®äºå調æ»ãªãã§èª¿æ»ã§ããŸãã
ãã®èšäºã¯ã以åã®èšäºãããæ·±ã詳现ã§ãããã
ãåå¿è
ã ãã§ãªããçµéšè±å¯ãªPythonéçºè
ã«ãšã£ãŠãèå³æ·±ããã®ã«ãªããŸãã
èæ
®ãããŸãïŒåŒãžã§ãã¬ãŒã¿ãŒããªã¹ããèŸæžããã³ã»ãããžã§ãã¬ãŒã¿ãŒããã¹ãããããžã§ãã¬ãŒã¿ãŒïŒ5ã€ã®ãªãã·ã§ã³ïŒãenumerateïŒïŒãrangeïŒïŒã§åäœããŸãã
ãŸããåé¡ãšçšèªãæ§æããµã€ã¯ã«åœ¢åŒã®é¡äŒŒç©ãããã³ã¢ããªã±ãŒã·ã§ã³ã®äŸã

ç§ã¯ãã¹ãŠã®æ¬ãã³ãŒã¹ã§ã«ããŒãããŠããªã
埮åŠããšãã¥ã¢ã³ã¹ãèæ
®ããããšããŸãããç¹ã«ãHabrahabrã§ãã§ã«å
¬éãããŠãããã®äž»é¡ã«é¢ããèšäºã«ã¯æ¬ ããŠããŸãã
ç®æ¬¡ïŒ
1.
å®çŸ©ãšåé¡ã2.
æ§æã3.
forã«ãŒãã®åœ¢åŒãšé¢æ°ã®åœ¢åŒã®ã¢ããã°ã4.
åŒãžã§ãã¬ãŒã¿ã5.
æšæºã³ã¬ã¯ã·ã§ã³ã®çæã6.
é »åºŠããã³éšåæ€çŽ¢ã7.
ãã¹ããããã«ãŒããšãžã§ãã¬ãŒã¿ãŒã8.
ç¯å²ïŒïŒã䜿çšããŸãã9.
ä»é²1.è¿œå ã®äŸã10.
ä»é²2.é¢é£ãªã³ã¯ã1.å®çŸ©ãšåé¡
1.1äœãšçç±
- åŒãžã§ãã¬ãŒã¿ã¯ãèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ãçæããããã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ãå¥ã®ã¿ã€ãã«å€æããã³ã³ãã¯ãã§äŸ¿å©ãªæ¹æ³ã®ããã«èšèšãããŠããŸãã
- çæãŸãã¯å€æã®ããã»ã¹ã§ã¯ãæ¡ä»¶ãé©çšããŠèŠçŽ ãå€æŽããããšãã§ããŸãã
- åŒãžã§ãã¬ãŒã¿ãŒã¯æ§æç³è¡£ã§ããã䜿çšããªããšè§£æ±ºã§ããªãåé¡ã解決ããŸããã
1.2åŒãžã§ãã¬ãŒã¿ã䜿çšããå©ç¹
- éåžžã®ã«ãŒãã§ã®çæãããçããŠäŸ¿å©ãªæ§æã
- mapïŒïŒãfilterïŒïŒãããã³lambdaé¢æ°ã®åæ䜿çšãçµã¿åãããæ©èœçã¢ããã°ãããç解ããããèªã¿ãããæ§æã
- äžè¬ã«ãç¹ã«ã³ãŒãå
ã«åæ§ã®æäœãå€æ°ããå Žåã¯ãã¿ã€ãã³ã°ãéããèªã¿ããããªããŸãã
1.3åé¡ãšæ©èœ
ç§ãã¡ã話ãããšããŠããããšã®ãã·ã¢èªã®ååã«ã¯ãããã€ãã®çšèªã®æ··ä¹±ããããšããã«èšããªããã°ãªããŸããã
ãã®èšäºã§ã¯æ¬¡ã®è¡šèšæ³ã䜿çšããŠããŸãã
- ãžã§ãã¬ãŒã¿ãŒåŒ-çæãããæ¬åŒ§å
ã®åŒã¯ãåå埩ã§èŠåã«åŸã£ãŠæ°ããèŠçŽ ãäœæããŸãã
- ã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ -ãªã¹ãå
å
ãžã§ãã¬ãŒã¿ãèŸæžå
å
ãžã§ãã¬ãŒã¿ãéåå
å
ãžã§ãã¬ãŒã¿ã®ç·ç§°ã
äžéšã®å Žæã§ã¯ãçšèªã®ããŒããåé¿ããããã«ãããžã§ãã¬ãŒã¿ãŒããšããçšèªãããã«æ確ã«ããã«äœ¿çšããŸãã
2.æ§æ
ãŸãããžã§ãã¬ãŒã¿åŒã®äžè¬çãªæ§æã®å³ã瀺ããŸãã
éèŠ ïŒãã®æ§æã¯ããžã§ãã¬ãŒã¿ãŒåŒãš3çš®é¡ã®ã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ãŒãã¹ãŠã§åãã§ããéãã¯ãæ¬åŒ§ã§å²ãããšã§ãïŒåã®å³ãåç
§ïŒã
ç解ã«éèŠãªäžè¬ååïŒ
- å
¥åã¯ã€ãã¬ãŒã¿ã§ãããžã§ãã¬ãŒã¿é¢æ°ãåŒãžã§ãã¬ãŒã¿ãã³ã¬ã¯ã·ã§ã³ãªã©ãããããã®å埩ããµããŒããããªããžã§ã¯ãã§ãã
- æ¡ä»¶ã¯ãèŠçŽ ãæçµçãªåŒã«å
¥ããã£ã«ã¿ãŒã§ãããèŠçŽ ããããæºãããªãå Žåã¯ã¹ããããããŸãã
- æçµåŒã¯ãéžæãããåã¢ã€ãã ãåºååã«å€æãããã®ããŸãã¯åã«å€æŽããã«åºåãããã®ã§ãã
2.1åºæ¬æ§æ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
å®éãããã§ã¯èå³æ·±ãããšã¯äœãèµ·ãããŸããã§ããããªã¹ãã®ã³ããŒãååŸããã ãã§ãã ãã®ãããªã³ããŒãäœæããããåã«ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠã³ã¬ã¯ã·ã§ã³ãåããåã«æœåºããããšã¯æå³ããããŸãã-ããã¯ãã³ã¬ã¯ã·ã§ã³ãäœæããããã®é©åãªã¡ãœãããŸãã¯é¢æ°ã䜿çšããããšã§ã¯ããã«ç°¡åã«è¡ãããšãã§ããŸãïŒã·ãªãŒãºã®æåã®èšäºã§èª¬æïŒ
åŒãžã§ãã¬ãŒã¿ã®åšåã¯ãæ°ããã³ã¬ã¯ã·ã§ã³ã«èŠçŽ ãå«ããããã®æ¡ä»¶ãèšå®ã§ãããã®åºåïŒæ°ããã³ã¬ã¯ã·ã§ã³ã«å«ããïŒã®åã«åŒãŸãã¯é¢æ°ã䜿çšããŠçŸåšã®èŠçŽ ã®å€æãå®è¡ã§ãããšããäºå®ã«ãããŸãã
2.2ãã£ã«ã¿ãªã³ã°ã®æ¡ä»¶ãè¿œå ãã
éèŠ ïŒæ¡ä»¶ã¯åå埩ã§ãã§ãã¯ãããæ¡ä»¶ãæºããèŠçŽ ã®ã¿ãåŒã®åŠçã«é²ã¿ãŸãã
åã®äŸã«æ¡ä»¶ãè¿œå ããŸã-å¶æ°ã®èŠçŽ ã®ã¿ãååŸããŸãã
ããã€ãã®æ¡ä»¶ã䜿çšã
ãŠãããããè«çæŒç®åãšçµã¿åãããŸã ã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_b = [x for x in list_a if x % 2 == 0 and x > 0]
2.3åŒã«èŠçŽ åŠçãè¿œå ãã
ãã£ã«ã¿ãŒãééããçŸåšã®èŠçŽ ã§ã¯ãªããããã䜿çšããŠåŒãè©äŸ¡ããçµæããŸãã¯é¢æ°ã«ãããã®åŠçã®çµæãæ¿å
¥ã§ããŸãã
éèŠ ïŒåŒã¯åå埩ã§ç¬ç«ããŠå®è¡ãããåèŠçŽ ãåå¥ã«åŠçããŸãã
ããšãã°ãåèŠçŽ ã®å€ã®äºä¹ãèšç®ã§ããŸãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_b = [x**2 for x in list_a] print(list_b)
ãŸãã¯ãlenïŒïŒé¢æ°ã䜿çšããŠæååã®é·ããã«ãŠã³ãããŸã
list_a = ['a', 'abc', 'abcde'] list_b = [len(x) for x in list_a] print(list_b)
2.4åå²åŒ
泚ïŒåŒã§ïŒPython 2.5以éïŒ
if-elseã³ã³ã¹ãã©ã¯ãã䜿çšããŠãæçµåŒãåå²ã§ããŸã ã
ãã®å ŽåïŒ
- åå²æ¡ä»¶ã¯ãã€ãã¬ãŒã¿ã®åŸã§ã¯ãªãåã«æžã蟌ãŸããŸãã
- ãã®å Žåãif-elseã¯åŒãå®è¡ããåã®ãã£ã«ã¿ãŒã§ã¯ãªããåŒèªäœã®åå²ã§ããã€ãŸããå€æ°ã¯æ¢ã«ãã£ã«ã¿ãŒãééããŠããŸãããæ¡ä»¶ã«å¿ããŠããŸããŸãªæ¹æ³ã§åŠçã§ããŸãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_b = [x if x < 0 else x**2 for x in list_a]
ãã£ã«ã¿ãªã³ã°ãšåå²ã®çµã¿åãããçŠæ¢ãã人ã¯ããŸããã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_b = [x**3 if x < 0 else x**2 for x in list_a if x % 2 == 0]
åãã«ãŒãã®äŸ list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_b = [] for x in list_a: if x % 2 == 0: if x < 0: list_b.append(x ** 3) else: list_b.append(x ** 2) print(list_b)
2.5èªã¿ãããã®æ¹å
Pythonã®æ§æã§ã¯ãæ¬åŒ§å
ã§æ¹è¡ã䜿çšã§ããããšãå¿ããªãã§ãã ããã ãã®æ©èœã䜿çšãããšãåŒãžã§ãã¬ãŒã¿ãŒã®æ§æãèªã¿ãããããããšãã§ããŸãã
numbers = range(10)
3. forã«ãŒãã®åœ¢åŒãšé¢æ°ã®åœ¢åŒã®ã¢ããã°
åè¿°ã®ããã«ãåŒãžã§ãã¬ãŒã¿ã䜿çšããŠè§£æ±ºãããã¿ã¹ã¯ã¯ããããããªããŠã解決ã§ããŸãã åãåé¡ã解決ããããã«äœ¿çšã§ããä»ã®ã¢ãããŒãã次ã«ç€ºããŸãã
ããšãã°ãç°¡åãªã¿ã¹ã¯ãèŠãŠã¿ãŸããããæ°åã®ãªã¹ãããå¶æ°ã®æ£æ¹åœ¢ã®ãªã¹ããäœæãã3ã€ã®ç°ãªãã¢ãããŒãã䜿çšããŠããã解ããŸãã
3.1ãªã¹ããžã§ãã¬ãŒã¿ãŒã䜿çšãããœãªã¥ãŒã·ã§ã³
numbers = range(10) squared_evens = [n ** 2 for n in numbers if n % 2 == 0] print(squared_evens)
3.2ã forã«ãŒãã䜿çšãããœãªã¥ãŒã·ã§ã³
éèŠ ïŒååŒãžã§ãã¬ãŒã¿ãŒã¯forã«ãŒããšããŠæžãçŽãããšãã§ããŸããããã¹ãŠã®forã«ãŒãããã®ãããªåŒãšããŠè¡šãããšã¯ã§ããŸããã
numbers = range(10) squared_evens = [] for n in numbers: if n % 2 == 0: squared_evens.append(n ** 2) print(squared_evens)
äžè¬ã«ãéåžžã«è€éã§è€éãªã¿ã¹ã¯ã®å Žåããµã€ã¯ã«ã®åœ¢ã®ãœãªã¥ãŒã·ã§ã³ã¯ãããç解ãããããä¿å®ãšèª¿æŽã容æã§ãã åçŽãªã¿ã¹ã¯ã®å Žåããžã§ãã¬ãŒã¿åŒã®æ§æã¯ããã³ã³ãã¯ãã§èªã¿ããããªããŸãã
3.3ã é¢æ°ã䜿çšãããœãªã¥ãŒã·ã§ã³ã
ãŸããåŒãžã§ãã¬ãŒã¿ãŒãšã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ãŒãæ©èœçãªã¹ã¿ã€ã«ã§ãããããæ°ãããããæãŸããã¹ã¿ã€ã«ã§ããããšã«æ³šæããŠãã ããã
mapïŒïŒãlambdaããã³filterïŒïŒãçµã¿åãããããšã«ãããå€ãæ©èœçã¢ãããŒããé©çšããŠåãåé¡ã解決ã§ããŸãã
numbers = range(10) squared_evens = map(lambda n: n ** 2, filter(lambda n: n % 2 == 0, numbers)) print(squared_evens)
ãã®ãããªäŸã¯éåžžã«æ©èœããŠãããšããäºå®ã«ãããããããèªãããšã¯é£ãããåŒãžã§ãã¬ãŒã¿ãŒã®æ§æã䜿çšããããšã¯ããæãŸãããšç解ã§ããã§ãããã
4.ãžã§ãã¬ãŒã¿ãŒåŒ
ãžã§ãã¬ãŒã¿ãŒåŒã¯ãPython 2.4以éã§äœ¿çšå¯èœã§ãã ã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ãŒãšã®äž»ãªéãã¯ãã³ã¬ã¯ã·ã§ã³
å
šäœãäžåºŠã«ã¡ã¢ãªã«ããŒãããããšãªããäžåºŠã«1ã€ã®èŠçŽ ã
çºè¡ããããšã§ãã
UPDïŒããäžåºŠããã®ç¹ã«æ³šæããŠãã ããïŒãžã§ãã¬ãŒã¿ãŒã䜿çšããã«å€§ããªããŒã¿æ§é ãäœæãããšãããããã¡ã¢ãªå
šäœã«ããŒãããããããã¢ããªã±ãŒã·ã§ã³ã®
ã¡ã¢ãªæ¶è²»éãå¢å ãã極端ãªå Žåãã¡ã¢ãªãååã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³
ããã¯ã©ãã·ã¥ãããŸã»MemoryErrorãã ã ãžã§ãã¬ãŒã¿åŒã䜿çšããå ŽåãèŠçŽ ã¯äžåºŠã«1ã€ãã€ãåŠçæã«äœæããããããããã¯çºçããŸããã
ãžã§ãã¬ãŒã¿ãŒåŒã®äŸïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_gen = (i for i in list_a)
ãžã§ãã¬ãŒã¿ãŒåŒã®æ©èœ
- æ¬åŒ§ãªãã§ãžã§ãã¬ãŒã¿ãæžãããšã¯ã§ããŸãã -ããã¯æ§æãšã©ãŒã§ãã
- é¢æ°ã«æž¡ããšããè¿œå ã®æ¬åŒ§ã¯ãªãã·ã§ã³ã§ã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_sum = sum(i for i in list_a)
- len ïŒïŒé¢æ°ã§é·ããååŸã§ããŸãã
- print ïŒïŒã§èŠçŽ ãå°å·ã§ããŸãã
print(my_gen)
- åŒãžã§ãã¬ãŒã¿ãééããåŸã 空ã®ãŸãŸã«ãªãããšã«æ³šæããŠãã ããïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_gen = (i for i in list_a) print(sum(my_gen))
- ãžã§ãã¬ãŒã¿åŒã¯ç¡éã«ããããšãã§ããŸãã
import itertools inf_gen = (x for x in itertools.count())
ãã®ãããªãžã§ãã¬ãŒã¿ãŒã䜿çšãããšãã¯æ³šæããŠãã ãããæ£ãã䜿çšããªããšããå¹æãã¯ç¡éã«ãŒãã®ããã«ãªããŸãã
- ã¹ã©ã€ã¹ã¯ãžã§ãã¬ãŒã¿ãŒåŒã«ã¯é©çšã§ããŸãã ïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_gen = (i for i in list_a) my_gen_sliced = my_gen[1:3]
- ãžã§ãã¬ãŒã¿ãŒããã ç®çã®ã³ã¬ã¯ã·ã§ã³ãç°¡åã«ååŸã§ããŸã ã ããã«ã€ããŠã¯ã次ã®ç« ã§è©³ãã説æããŸãã
5.æšæºã³ã¬ã¯ã·ã§ã³ã®çæ
5.1ãžã§ãã¬ãŒã¿ãŒåŒããã³ã¬ã¯ã·ã§ã³ãäœæãã
listïŒïŒãtupleïŒïŒãsetïŒïŒãfrozensetïŒïŒé¢æ°ã䜿çšããŠãžã§ãã¬ãŒã¿ãŒåŒããã³ã¬ã¯ã·ã§ã³ãäœæãã
泚 ïŒãã®æ¹æ³ã§ã¯ãçæåŸã«äžå€ã«ãªããããäžå€ã»ãããšã¿ãã«ã®äž¡æ¹ãäœæã§ããŸãã
泚 ïŒæååã®å Žåããã®ã¡ãœããã¯æ©èœããŸããïŒ ãã®æ¹æ³ã§ãã£ã¯ã·ã§ããªãžã§ãã¬ãŒã¿ãäœæããæ§æã«ã¯ç¬èªã®ç¹æ§ãããã次ã®ãµãã»ã¯ã·ã§ã³ã§æ€èšããŸãã
- å²ãåœãŠãããå€æ°ã®å®æãããžã§ãã¬ãŒã¿ãŒåŒãã³ã¬ã¯ã·ã§ã³äœæé¢æ°ã«æž¡ããŸãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_gen = (i for i in list_a)
- åŒã³åºãããé¢æ°ã®æ¬åŒ§å
ã«ãžã§ãã¬ãŒã¿ãŒåŒãçŽæ¥èšè¿°ããŠãã³ã¬ã¯ã·ã§ã³ãäœæããŸãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_list = list(i for i in list_a) print(my_list)
ã¿ãã«ãå€æ°ãããã³äžå€ã®å€æ°ã«ã€ããŠãåãããšãèšããŸãã
5.2ç¹å¥ãªã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ãŒã®æ§æ
ã³ã¬ã¯ã·ã§ã³å
šäœãã¡ã¢ãªã«ããŒãããã«1ã€ãã€å€ãçæãããžã§ãã¬ãŒã¿ãŒåŒãšã¯ç°ãªããã³ã¬ã¯ã·ã§ã³ãžã§ãã¬ãŒã¿ãŒã䜿çšãããšãã³ã¬ã¯ã·ã§ã³å
šäœãããã«çæãããŸãã
ãããã£ãŠãäžèšã®ç¹å®ã®åŒãžã§ãã¬ãŒã¿ã®ä»£ããã«ããã®ãããªã³ã¬ã¯ã·ã§ã³ã«ã¯ããã®ã¿ã€ãã®ã³ã¬ã¯ã·ã§ã³ã«ç¹åŸŽçãªãã¹ãŠã®æšæºããããã£ãå«ãŸããŸãã
ã»ãããšãã£ã¯ã·ã§ããªã®çæã«ã¯åããã©ã±ããã䜿çšãããããšã«
泚æããŠ
ãã ãããéãã¯ããã£ã¯ã·ã§ããªã«doubleèŠçŽ ã®keyïŒvalueãããããšã§ãã
- ãªã¹ãå
å
è¡šèšãžã§ãã¬ãŒã¿
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_list = [i for i in list_a] print(my_list)
æ¬åŒ§ãåè§ã§æžããªãã§ãã ããïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_list = [(i for i in list_a)] print(my_list)
- å
å
è¡šèšãžã§ãã¬ãŒã¿ãŒãèšå®ãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] my_set= {i for i in list_a} print(my_set)
- èŸæžç解
èŸæžå転
dict_abc = {'a': 1, 'b': 2, 'c': 3, 'd': 3} dict_123 = {v: k for k, v in dict_abc.items()} print(dict_123)
ãªã¹ãããã®èŸæžïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] dict_a = {x: x**2 for x in list_a} print(dict_a)
éèŠ ïŒ ãã®ãããªãã£ã¯ã·ã§ããªäœææ§æã¯äžæ¬åŒ§ã§ã®ã¿æ©èœãã ãžã§ãã¬ãŒã¿åŒã¯ãã®ããã«äœæã§ããŸãããããã«ã¯ãããã«ç°ãªãæ§æã䜿çšãããŸãïŒã³ã¡ã³ãã®ãã«ãã®longclapsã«æè¬ããŸãïŒã
5.3ã©ã€ã³çæ
åŒãžã§ãã¬ãŒã¿ã®æ§æã®ä»£ããã«ãæååã¡ãœããã䜿çšããŠæååãäœæããŸãã ãžã§ãã¬ãŒã¿ãŒåŒãåŒæ°ãšããŠæž¡ãããšãã§ãã
join ïŒïŒã
ã泚æãã ãã ïŒã³ã¬ã¯ã·ã§ã³ã¢ã€ãã ã¯ãæååã«çµåãããæååã§ãªããã°ãªããŸããïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5]
6.é »åºŠãšéšåæ€çŽ¢
6.1 enumerateïŒïŒã®äœ¿çš
ãã£ã«ã¿ãŒæ¡ä»¶ã®ã¿ã¹ã¯ã®æ¡ä»¶ã§ã¯ãçŸåšã®èŠçŽ ã®å€ã確èªããå¿
èŠã¯ãããŸããããç¹å®ã®é »åºŠã確èªããå¿
èŠããããŸããããšãã°ã3ã€ããã®èŠçŽ ãååŸããå¿
èŠããããŸãã
ãã®ãããªã¿ã¹ã¯ã«ã¯ãã«ãŒãå
ã§ã€ãã¬ãŒã¿ãŒãå埩åŠçãããšãã«ã«ãŠã³ã¿ãŒãèšå®ããenumerateïŒïŒé¢æ°ã䜿çšã§ããŸãã
for i, x in enumerate(iterable)
ããã§ãxã¯çŸåšã®èŠçŽ iã¯ãŒãããå§ãŸãã·ãªã¢ã«çªå·ã§ã
ã€ã³ããã¯ã¹ã®åäœã説æããŸãããïŒ
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_d = [(i, x) for i, x in enumerate(list_a)] print(list_d)
ããŠãå®éã®åé¡ã解決ããŠã¿ãŸããã-å
ã®ãªã¹ããããªã¹ããžã§ãã¬ãŒã¿ãŒã®3çªç®ã®èŠçŽ ããã¹ãŠéžæããŸãã
list_a = [-2, -1, 0, 1, 2, 3, 4, 5] list_e = [x for i, x in enumerate(list_a, 1) if i % 3 == 0] print(list_e)
enumerateïŒïŒé¢æ°ã®éèŠãªæ©èœïŒ
- enumerateïŒïŒé¢æ°ãåŒã³åºãããã®2ã€ã®ãªãã·ã§ã³ããããŸãã
- 2çªç®ã®ãã©ã¡ãŒã¿ãŒãªãã®åæïŒã€ãã¬ãŒã¿ãŒïŒã¯0ããã«ãŠã³ããããŸãã
- enumerateïŒiteratorãstartïŒ-startã®å€ããã«ãŠã³ããéå§ããŸãã ããšãã°ã0ã§ã¯ãªã1ããã«ãŠã³ãããå¿
èŠãããå Žåã«äŸ¿å©ã§ãã
- enumerateïŒïŒã¯ãçŸåšã®å埩åèŠçŽ ã®ã·ãªã¢ã«çªå·ãšå€ã®ã¿ãã«ãè¿ããŸãã åŒãžã§ãã¬ãŒã¿ã®çµæã®ã¿ãã«ã¯ã次ã®2ã€ã®æ¹æ³ã§ååŸã§ããŸãã
- ïŒiãjïŒfor iãj in enumerateïŒå埩åïŒ-æåã®ãã¢ã®æ¬åŒ§ãå¿
èŠã§ãïŒ
- åæå
ã®ãã¢ã®ãã¢ïŒmylistïŒ-ããã«ã«ããã«ã§äœæ¥ããŸã
- ã€ã³ããã¯ã¹ã¯ãåŸã§æ¡ä»¶ãæž¡ãããã©ããã«é¢ä¿ãªãã åŠçããããã¹ãŠã®èŠçŽ ã«å¯ŸããŠèæ
®ãããŸã ïŒ
first_ten_even = [(i, x) for i, x in enumerate(range(10)) if x % 2 == 0] print(first_ten_even)
- enumerateïŒïŒé¢æ°ã¯ã³ã¬ã¯ã·ã§ã³ã®äžéšã®å
éšå±æ§ã«ã¢ã¯ã»ã¹ãããåŠçãããèŠçŽ ã®ã«ãŠã³ã¿ãŒãå®è£
ããã ãã§ãããããã£ãŠãã€ã³ããã¯ã¹ä»ããããŠããªãé åºä»ããããŠããªãã³ã¬ã¯ã·ã§ã³ã«äœ¿çšãããããšã劚ãããã®ã¯ãããŸããã
- enumerateïŒïŒã«ãŠã³ã¿ãŒã«ãã£ãŠçµæã«å«ãŸããèŠçŽ ã®æ°ãå¶éããå ŽåïŒããšãã°ãi <10ã®å ŽåïŒãã€ãã¬ãŒã¿ãŒã¯å®å
šã«åŠçãããŸããã巚倧ãªã³ã¬ã¯ã·ã§ã³ã®å Žåã¯éåžžã«ãªãœãŒã¹ãæ¶è²»ããŸãã ãã®åé¡ã®è§£æ±ºçã«ã€ããŠã¯ããµãã»ã¯ã·ã§ã³ãå埩å¯èœãªéšåã®åæãã§èª¬æããŸãã
6.2å埩å¯èœéšåã®åæã
å Žåã«ãã£ãŠã¯ãæ¡ä»¶ãæºããéåžžã«å€§ããªã³ã¬ã¯ã·ã§ã³ãŸãã¯ç¡éã®ãžã§ãã¬ãŒã¿ãŒããã¿ã¹ã¯ããããæ¡ä»¶ãæºããæåã®ããã€ãã®èŠçŽ ãéžæããããšããããŸãã
enumerateïŒïŒã€ã³ããã¯ã¹ãŸãã¯çµæã®çµæã®ã³ã¬ã¯ã·ã§ã³ã®ã¹ã©ã€ã¹ã«å¶éã®æ¡ä»¶ãæã€æ£èŠã®ãžã§ãã¬ãŒã¿ãŒåŒã䜿çšããå Žåããããã«ããŠãã巚倧ãªã³ã¬ã¯ã·ã§ã³å
šäœã調ã¹ãŠãããã«å€ãã®ã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ãè²»ããå¿
èŠããããŸãã
解決çã¯ã
itertoolsããã±ãŒãžã®
isliceïŒïŒé¢æ°ã䜿çšããããšã§ãã
import itertools first_ten = (itertools.islice((x for x in range(1000000000) if x % 2 == 0), 10)) print(list(first_ten))
çããã人ã®ããã«ïŒã©ã³ã¿ã€ã ããã§ã㯠import time import itertools
7.ãã¹ããããã«ãŒããšãžã§ãã¬ãŒã¿ãŒ
ãã®å Žåãã«ãŒããŸãã¯åŒãžã§ãã¬ãŒã¿èªäœããã¹ããããŠããå Žåãããè€éãªãªãã·ã§ã³ãèããŠã¿ãŸãããã ããã§ã¯ãç¬èªã®ç¹æ§ãšç¯å²ãæã€ããã€ãã®ãªãã·ã§ã³ãå¯èœã§ãããããæ··ä¹±ããªãããã«ãããããåå¥ã«æ€èšãããã®åŸãäžè¬çãªã¹ããŒã ã瀺ããŸãã
7.1ãã¹ããããã«ãŒã
çæã®çµæã
1次å
ã®æ§é ãåŸãããŸãã
éèŠ ïŒ åŒãžã§ãã¬ãŒã¿ãŒå
ã§ãã¹ããããã«ãŒããæäœããå Žåãfor inåœä»€ã¯ããžã§ãã¬ãŒã¿ãŒã䜿çšããªãåæ§ã®ãœãªã¥ãŒã·ã§ã³ãšåãé åºïŒå·Šããå³ïŒã«åŸããã«ãŒãäžïŒäžããäžïŒã§ã®ã¿å®è¡ãããŸãïŒ åãããšã¯ãããæ·±ãã¬ãã«ã®ãã¹ãã«ãåœãŠã¯ãŸããŸãã
7.1.1ã«ãŒããç¬ç«ããå埩åãééããã«ãŒãã®å
¥ãå
äžè¬æ§æïŒ
[iter2ã®yã®iter1ã®xã®åŒ]ã¢ããªã±ãŒã·ã§ã³ ïŒ2ã€ã®å埩åããã®ããŒã¿ã䜿çšããŠ1次å
æ§é ãçæããŸãã
ããšãã°ã座æšã¿ãã«ãããŒãšããŠäœ¿çšããŠãã£ã¯ã·ã§ããªãäœæããå€ããŒãã§åããŸãã
rows = 1, 2, 3 cols = 'a', 'b' my_dict = {(col, row): 0 for row in rows for col in cols} print(my_dict)
ãã®åŸãæ°ããå€ãèšå®ããããååŸããããšãã§ããŸã åãµã€ã¯ã«
ã§è¿œå ã®ãã£ã«ã¿ãŒæ¡ä»¶ã䜿çšããŠãåãããšãã§ããŸãã
rows = 1, 2, 3, -4, -5 cols = 'a', 'b', 'abc'
åãåé¡ããµã€ã¯ã«ã®å©ããåããŠè§£æ±ºããŸããã rows = 1, 2, 3, -4, -5 cols = 'a', 'b', 'abc' my_dict = {} for row in rows: if row > 0: for col in cols: if len(col) == 1: my_dict[col, row] = 0 print(my_dict)
7.1.2å
åŽã®ã«ãŒããå€åŽã®ã«ãŒãã®çµæã«åŸãã«ãŒãã®ãã¹ã
äžè¬çãªæ§æïŒ
[xã®yã®ã€ãã¬ãŒã¿ã®xã®åŒ] ã
ã¢ããªã±ãŒã·ã§ã³ ïŒ2次å
ã®ããŒã¿æ§é ããã€ãã¹ããŠãããã©ãããªã1次å
ã«å€æããå¿
èŠãããå Žåã®æšæºçãªã¢ãããŒãã ãã®å Žåãå€åŽã®ã«ãŒãã®ã©ã€ã³ãééããå
åŽã®ã«ãŒãã§2次å
æ§é ã®åè¡ã®èŠçŽ ãééããŸãã
2次å
ã®ãããªãã¯ã¹ïŒãªã¹ãã®ãªã¹ãïŒããããšããŸãã ãããŠãããããã©ãããªäžæ¬¡å
ãªã¹ãã«å€æããããšæããŸãã
matrix = [[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23]]
ãã¹ããããã«ãŒãã䜿çšããŠè§£æ±ºãããåãåé¡ flattened = [] for row in matrix: for n in row: flattened.append(n) print(flattened)
UPDïŒã³ã¡ã³ãããã®ãšã¬ã¬ã³ããªãœãªã¥ãŒã·ã§ã³ import itertools flattened = list(itertools.chain.from_iterable(matrix))
7.2ãã¹ãããããžã§ãã¬ãŒã¿ãŒ
ãžã§ãã¬ãŒã¿ãŒåŒå
ã®forã«ãŒãã ãã§ãªãããžã§ãã¬ãŒã¿ãŒèªäœããã¹ãã§ããŸãã
ãã®ã¢ãããŒãã¯
ã2次å
æ§é ã
æ§ç¯ããå¿
èŠãããå Žåã«äœ¿çšãããŸãã
éèŠ ïŒïŒãã¹ããããã«ãŒãã䜿çšããäžèšã®äŸãšã¯ç°ãªãããã¹ãããããžã§ãã¬ãŒã¿ãŒã§ã¯ãå€éšãžã§ãã¬ãŒã¿ãŒãæåã«åŠçããã次ã«å
éšãžã§ãã¬ãŒã¿ãŒãã€ãŸãå³ããå·Šã«é çªã«åŠçãããŸãã
以äžã§ã¯ããã®äœ¿çšã®ããã®2ã€ã®ãªãã·ã§ã³ãæ€èšããŸãã
7.2.1-ãžã§ãã¬ãŒã¿ãŒå
ã®ãã¹ãããããžã§ãã¬ãŒã¿ãŒ-2次å
ã®2ã€ã®1次å
äžè¬çãªæ§æïŒ
[[iter2ã®yã®åŒ] iter1ã®xã®]ã¢ããªã±ãŒã·ã§ã³ ïŒ2ã€ã®1次å
ã€ãã¬ãŒã¿ã®ããŒã¿ã䜿çšããŠ2次å
æ§é ãçæããŸãã
ããšãã°ã5å3è¡ã®ãããªãã¯ã¹ãäœæãããŒãã§åããŸãã
w, h = 5, 3
2ã€ã®ãã¹ããããã«ãŒãã§åããããªãã¯ã¹ãäœæãã-ãã¹ãã®é åºã«æ³šæããŠãã ãã matrix = [] for y in range(h): new_row = [] for x in range(w): new_row.append(0) matrix.append(new_row) print(matrix)
泚ïŒäœæåŸãéåžžã®2次å
é
åãšåæ§ã«ãããªãã¯ã¹ãæäœã§ããŸã 7.2.2-ãžã§ãã¬ãŒã¿ãŒå
ã®ãã¹ãããããžã§ãã¬ãŒã¿ãŒ-2次å
ãã2次å
äžè¬çãªæ§æïŒ
[ã€ãã¬ãŒã¿ã®xã®[xã®yã®åŒ]]ã¢ããªã±ãŒã·ã§ã³ ïŒ2次å
ããŒã¿æ§é ã調ã¹ãŠãçµæãå¥ã®2次å
æ§é ã«ä¿åããŸãã
ãããªãã¯ã¹ãåãïŒ
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
åè¡åèŠçŽ ãäºä¹ããŸãã
squared = [[cell**2 for cell in row] for row in matrix] print(squared)
ãã¹ããããã«ãŒããšåãæäœ squared = [] for row in matrix: new_row = [] for cell in row: new_row.append(cell**2) squared.append(new_row) print(squared)
äžèšã®ãã¹ãŠã®ãªãã·ã§ã³ã1ã€ã®ã¹ããŒã ã«ãŸãšããŸãïŒã¯ãªãã¯ã«ãããã«ãµã€ãºïŒïŒ

7.3-ãžã§ãã¬ãŒã¿ãŒãå埩åŠçãããžã§ãã¬ãŒã¿ãŒ
ãžã§ãã¬ãŒã¿ãŒã¯forã«ãŒãã§ã€ãã¬ãŒã¿ãŒãšããŠäœ¿çšã§ããããããžã§ãã¬ãŒã¿ãŒããšã«ãžã§ãã¬ãŒã¿ãŒãäœæããããã«ã䜿çšã§ããŸãã
åæã«ãããã¯2ã€ã®åŒã«æ§æçã«èšè¿°ãããããã¹ããããžã§ãã¬ãŒã¿ãŒã«çµåãããã§ããŸãã
ãã®å¯èœæ§ã説æããŸãã
ãã®ãããªãªã¹ããžã§ãã¬ãŒã¿ãŒã2ã€ãããšããŸãã
list_a = [x for x in range(-2, 4)]
list_aããªã¹ããžã§ãã¬ãŒã¿ãŒã«çœ®ãæããããšã§ãåãããšã1ã€ã®åŒã«èšè¿°ã§ããŸãã
list_c = [x**2 for x in [x for x in range(-2, 4)]] print(list_c)
longclapsããã®UPDïŒãžã§ãã¬ãŒã¿ãŒãè€çŽ é¢æ°fïŒxïŒ= uïŒvïŒxïŒïŒã®äŸãšçµã¿åãããå©ç¹
list_c = [t + t ** 2 for t in (x ** 3 + x ** 4 for x in range(-2, 4))]
8.ç¯å²ã®äœ¿çšïŒïŒ
ã³ã¬ã¯ã·ã§ã³ãçæããæ¹æ³ã«ã€ããŠèšãã°ãç®è¡ã·ãŒã±ã³ã¹ãäœæããããã«èšèšãããã·ã³ãã«ã§éåžžã«äŸ¿å©ãªé¢æ°ç¯å²ïŒïŒãç¡èŠããããšã¯ã§ããŸããã
rangeïŒïŒé¢æ°ã®ç¹åŸŽïŒ
- ã»ãšãã©ã®å Žåãå¿
èŠãªåæ°ã ãforã«ãŒããéå§ããããã«rangeïŒïŒé¢æ°ã䜿çšãããŸãã ããšãã°ãäžèšã®äŸã®ãããªãã¯ã¹çæãåç
§ããŠãã ããã
- Python 3ã§ã¯ãrangeïŒïŒã¯ãã¢ã¯ã»ã¹ããããã³ã«æ¬¡ã®èŠçŽ ãè¿ããžã§ãã¬ãŒã¿ãŒãè¿ããŸãã
- 䜿çšããããã©ã¡ãŒã¿ãŒã¯ ãã¹ã©ã€ã¹ã®ãã©ã¡ãŒã¿ãŒãšäŒŒãŠããŸã ïŒ1ã€ã®ãã©ã¡ãŒã¿ãŒãæã€æåã®äŸãé€ãïŒã
- ç¯å²ïŒåæ¢ïŒ-ãã®å Žåã0ããåæ¢1ãŸã§ã
- ç¯å²ïŒéå§ãåæ¢ïŒ-äžèšã®äŸãšåæ§ã§ããããŒã以å€ã®éå§ãæå®ã§ããŸãããè² ã®å€ãæå®ã§ããŸãã
- ç¯å²ïŒéå§ãåæ¢ãã¹ãããïŒ-ã¹ããããã©ã¡ãŒã¿ãŒãè¿œå ããŸããè² ã®å€ãæå®ããŠãéã®é åºã§ç¹°ãè¿ããŸãã
- Python 2ã«ã¯2ã€ã®é¢æ°ããããŸããïŒ
- ç¯å²ïŒ...ïŒã¯ãPython 3ã®åŒãªã¹ãïŒç¯å²ïŒ...ïŒïŒã«äŒŒãŠããŸããã€ãŸããå埩åã¯çæããããããã«äœæã§ãããªã¹ããçæãããŸããã€ãŸããã»ã¯ã·ã§ã³4ã§èª¬æããã¡ã¢ãªäžè¶³ã®åé¡ã¯ãã¹ãŠé¢é£ããŠãããPython 2ã§éåžžã«æ
éã«äœ¿çšããå¿
èŠããããŸãã
- xrangeïŒ...ïŒ-Python 3ã®rangeïŒ...ïŒãšåæ§ã«æ©èœããããŒãžã§ã³3ããé€å€ãããŸããã
䜿çšäŸïŒ
print(list(range(5)))
9.ä»é²1.è¿œå ã®äŸ
9.1ããã€ãã®ãªã¹ãã®é 次éé
import itertools l1 = [1,2,3] l2 = [10,20,30] result = [l*2 for l in itertools.chain(l1, l2)] print(result)
9.2ãããªãã¯ã¹è»¢çœ®
ïŒè¡ãåãšäº€æããããšãã®ãããªãã¯ã¹å€æïŒããããªãã¯ã¹ãåãã matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
åŒãžã§ãã¬ãŒã¿ã䜿çšããŠè»¢çœ®ããŸãã transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))] print(transposed)
ãµã€ã¯ã«ã®åœ¢ã§ã®ãããªãã¯ã¹ã®åã転眮 transposed = [] for i in range(len(matrix[0])): new_row = [] for row in matrix: new_row.append(row[i]) transposed.append(new_row) print(transposed)
ãããŠã@ longclapsããã®ã¡ãã£ãšããé»éè¡ transposed = list(map(list, zip(*matrix))) print(transposed)
9.3å¶æ¥æ¥ã®ã¿ãéžæããã¿ã¹ã¯
10. 2.
- , , SQL Excel .
- UPD fireSparrow : Python â PythonQL, .
- , .
- ( ).
ãã£ã¹ã«ãã·ã§ã³ã«æåŸ
ããŸãã
- ç§ãã©ããã§ééããããéèŠãªããšãèæ
®ããªãã£ãå Žå-ã³ã¡ã³ããæžããŠãã ãããéèŠãªã³ã¡ã³ãã¯ãèè
åã瀺ãèšäºã®åŸåã«è¿œå ãããŸãã
- æ確ã§ãªãç¹ãããã説æãå¿
èŠãªå Žåã¯ãã³ã¡ã³ãã«è³ªåãæžããŠãã ããããŸãã¯ãç§ãŸãã¯ä»ã®èªè
ãçããåºããšãçãã®ããå®çšçãªè³ªåãåŸã§èšäºã«è¿œå ãããŸãã