ã¯ããã«
ããã«ã¡ã¯ãååã®80代ç®åå«å
¼ASé¨DS2課ã®åã§ããcollectionsã©ã¤ãã©ãªãæ´»ç¨ããã第ï¼å¼¾ï¼ä»åã¯dequeï¼ãããã¯ãã¨èªã¿ã¾ãï¼ã®ç´¹ä»ã§ãã
第ï¼å¼¾ã®namedtupleã第ï¼å¼¾ã®OrderedDictã¯ããããtupleã¨dictã®æ¡å¼µçã§ãããã¨ã¯ååããæ¨æ¸¬ãããã¨ãã§ãã¾ãããä»åã®dequeã¯ä½ã®æ¡å¼µçãªã®ãååã ãè¦ãã¨æçã§ã¯ããã¾ãããã
dequeã¯listã®æ¡å¼µçã¨ãªãã¾ããdequeã¯ç°¡åã«èª¬æããã¨ãããã¥ã¼ + ã¹ã¿ãã¯ãã¨è¨ãã¾ããããã§ã¯ãã¥ã¼ã¨ã¹ã¿ãã¯ã¨ã¯ä½ãï¼ãå
ã«ã¿ã¦ã¿ã¾ãããï¼
Queueï¼ãã¥ã¼ï¼ã¨ã¯ï¼
ãã¥ã¼ã¯ããå å ¥ãå åºããæ¹å¼ï¼FIFO: First In, First Outï¼ã§ãã¼ã¿ãåºãå ¥ããããã¼ã¿æ§é ã§ãã以ä¸ã®çµµãè¦ã¦ãã ããã

ä¸è¨ã®ãããªãã¥ã¼ããã£ãå ´åããã¼ã¿ãåãåºãé çªã¯ã1, 2, 7, 4ãã«ãªããå¾ããæå ¥ããããã¼ã¿ã¯ã4ãã®å¾ãã«æºã¾ã£ã¦ãããã4ããåãåºããããæ¬¡ã ã¨åãåºããã¨ãã§ãã¾ãã
ï¼ã¡ãªã¿ã«ããã¼ã¿ããã¥ã¼ã«å
¥ãããã¨ããã¨ã³ãã¥ã¼ï¼Enqueueï¼ãã¨ãããåºããã¨ããããã¥ã¼ï¼Dequeueï¼ãï¼dequeã§ã¯ããã¾ããï¼ï¼ï¼ã¨è¨ãã¾ããï¼
ã¤ã¾ããæºã¾ã£ã¦ãããã¼ã¿ã®ä¸ã§æãå ã«å ¥ã£ããã¼ã¿ãå ã«åºãããï¼å å ¥ãå åºãï¼æ§é ã«ãªãã¾ããããããã¥ã¼ã«ãªãã¾ããPythonã§ã¯ãã¥ã¼ãæ¨æºã©ã¤ãã©ãªã§æä¾ãã¦ãã¾ãã以ä¸ã¯ç°¡åãªãã¥ã¼ã®ä½¿ãæ¹ã§ãã
import queue ã q = queue.Queue(maxsize=4) # è¦ç´ ãï¼ã¤ã¾ã§å ¥ããã¥ã¼ãçæãã ã for i in range(3): q.put(i) # ãã¥ã¼ã«ãã¼ã¿ãæå ¥ãã ã q.qsize() # 3, ãã¥ã¼ã«æºã¾ã£ãè¦ç´ ã®æ°ãè¿ã q.full() # True, maxsize == q.qsize()ã®ãã ã for _ in range(3): q.get() # 0, 1, 2ã®é çªã§åå¾ ã q.empty() # True, ãã¥ã¼ã«æºã¾ã£ãè¦ç´ ããªããã°True, ãªããã°False
Stackï¼ã¹ã¿ãã¯ï¼ã¨ã¯ï¼
ãã¥ã¼ããå å ¥ãå åºããæ¹å¼ã ã£ããã¨ã«å¯¾ãã¦ãã¹ã¿ãã¯ã¯ãå¾å ¥ãå åºããæ¹å¼ï¼LIFO: Last In, First Outï¼ã§ãã¼ã¿ãåºãå ¥ããã¾ããåºãé çªããã¥ã¼ã®éã ã¨æãã¨æ¥½ã§ããã

ä¸è¬çã«LIFOæ¹å¼ã®ãã¥ã¼ãã¹ã¿ãã¯ã¨å¼ã³ã¾ãããPythonã§ã¯LifoQueueã¨ãããã¼ã¿æ§é åã§å®è£
ããã¦ãã¾ããQueueåæ§ãqueueã©ã¤ãã©ãªãã使ç¨ãããã¨ãã§ãã¾ããä½¿ãæ¹ã¯Queueã¨å¤ããã¾ããã
import queue ã q = queue.LifoQueue(maxsize=3) # è¦ç´ ãï¼ã¤ã¾ã§å ¥ããã¥ã¼ãçæãã ã for i in range(3): q.put(i) # ãã¥ã¼ã«ãã¼ã¿ãæå ¥ãã ã q.qsize() # 3, ãã¥ã¼ã«æºã¾ã£ãè¦ç´ ã®æ°ãè¿ã q.full() # True, maxsize == q.qsize()ã®ãã ã for _ in range(3): q.get() # 2, 1, 0ã®é çªã§åå¾ ã q.empty() # True, ãã¥ã¼ã«æºã¾ã£ãè¦ç´ ããªããã°True, ãªããã°False
deque: Queue + Stack
ããã§ã¯ãdequeãã¿ã¦ã¿ã¾ããããdequeã¨ããååã¯ãdouble-ended queueãã®ç¥èªã«ãªãã¾ãããã¥ã¼ã®å
é ãã¹ã¿ãã¯ã®æ«å°¾ã¨ãã両æ¹ã®æ«ç«¯ï¼double-endedï¼ãããã¼ã¿ãåºãå
¥ãã§ããããã®ååã«ãªãã¾ããããããããããããã以ä¸ã®å³ãè¦ã¦ãã ããã

両æ¹ã®æ«ç«¯ã©ãããããã¼ã¿ãæå
¥ãããã¨ãã§ããã©ãããããã¼ã¿ãåãåºããã¨ãã§ãã¾ãããããdequeã¨ãªãã¾ããPythonã§dequeã¯ä»¥ä¸ã®ããã«å©ç¨ã§ãã¾ãã
from collections import deque ã dq = deque('bcd') dq # deque(['b', 'c', 'd']) ã dq.append('e') # å³å´ã«'e'ã追å dq.appendleft('a') # å·¦å´ã«'a'ã追å dq # deque(['a', 'b', 'c', 'd', 'e']) ã dq.pop() # e, å³å´ã®è¦ç´ ãåå¾ dq.popleft() # a, å·¦å´ã®è¦ç´ ãåå¾ ã dq.rotate(1) # deque(['d', 'b', 'c']), å³åãã«è¦ç´ ãå転 dq.rotate(-1) # deque(['b', 'c', 'd']), å·¦åãã«è¦ç´ ãå転 ã dq[1] # 'c', ã¤ã³ããã¯ã¹æå®ã§å¤åå¾
åºæ¬çã«ãdequeã§å®ç¾ã§ããæä½èªä½ã¯listã使ã£ã¦ãå®è£
ãããã¨ãã§ãã¾ãããã ããlistã¯appendleftãããéï¼list.insert(0, element)ï¼ã«ãªã¹ãã«å
¥ã£ã¦ãå
¨ã¦ã®è¦ç´ ã®ã¤ã³ããã¯ã¹ãè²¼ãç´ãå¿
è¦ãããããªã¹ãã®ãµã¤ãºã大ãããªãã°ãªãã»ã©appendleftå¦çãé
ããªãã¾ãã
ãã®ãããªããã©ã¼ãã³ã¹ãèæ
®ãã¦å®è£
ãããã®ãdequeã§ãdequeã®ãµã¤ãºã«ã»ã¼å½±é¿ãªãappend, appendleftå¦çãã§ããã®ãdequeã®ã¡ãªããã¨ãªãã¾ãã
æå¾ã«
ãã¥ã¼ã¨ã¹ã¿ãã¯ã¯åºç¤çãªãã¼ã¿æ§é ã§ããããããã詳細ã調ã¹ã¦ã¿ãã®ãè¯ãããããã¾ããï¼
第ï¼å¼¾ã¾ã§tuple, dict, listã®æ¡å¼µçã¨ãªããã¼ã¿æ§é ãç´¹ä»ãã¾ãããsetã¯â¦ï¼ã¨æã£ãæ¹ãããã£ããããã¨æãã¾ããâ¦setã¯ããã¾ããï¼
ã¨ãããã¨ã§ãæ¬ã·ãªã¼ãºã¯ä»¥ä¸ã§çµäºã¨ãªãã¾ãããããã¨ããããã¾ããï¼
åèè³æ
- collections
- deque
- queueã¢ã¸ã¥ã¼ã«
- ãã¥ã¼ã¨ã¯
- ã¹ã¿ãã¯ã¨ã¯
- ããã¯ã¨ã¯
ããPythonãcollectionsã©ã¤ãã©ãªãæ´»ç¨ããããã·ãªã¼ãºä¸è¦§
å å å¹ (å·çè¨äºã®ä¸è¦§)
ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¹é¨ ãã£ããããã¡ã³ããµã¼ãã¹èª²
ååã®80代ç®åå«