{ "metadata": { "celltoolbar": "Raw Cell Format", "name": "", "signature": "sha256:23c33ab174e5a9c68a0ac0656c9d543633015a143de3b981b6fe947a7dcc444f" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "***\n", "# 7. \uc0ac\uc804(Dictionaries)\n", "***\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 01 \uc804 \uac1d\uccb4\uc758 \uae30\ucd08 \uc5f0\uc0b0\n", "***\n", "- \uc0ac\uc804(Dictionary) \uac1d\uccb4\uc758 \ud2b9\uc9d5\n", " - \uc9d1\ud569\uc801 \uc790\ub8cc\ud615\n", " - \uc790\ub8cc\uc758 \uc21c\uc11c\ub97c \uc815\ud558\uc9c0 \uc54a\ub294 \ub9e4\ud551(Mapping)\ud615\n", " - \ud0a4(Key)\ub97c \uc774\uc6a9\ud558\uc5ec \uac12(Value)\uc5d0 \uc811\uadfc\n", " - \ud0a4\uc640 \uac12\uc758 \ub9e4\ud551 1\uac1c\ub97c \uc544\uc774\ud15c(item)\uc774\ub77c\uace0 \ubd80\ub984" ] }, { "cell_type": "code", "collapsed": false, "input": [ "member = {'basketball':5, 'soccer':11, 'baseball':9}\n", "member['baseball'] # \uac80\uc0c9" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "9" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uac12\uc744 \uc800\uc7a5\ud560 \uc2dc\uc5d0 \ud0a4\ub97c \uc0ac\uc6a9\n", " - \ud0a4\uac00 \uc5c6\ub2e4\uba74 \uc0c8\ub85c\uc6b4 \ud0a4\uc640 \uac12\uc758 \uc544\uc774\ud15c\uc774 \uc0dd\uc131\n", " - \ud0a4\uac00 \uc774\ubbf8 \uc874\uc7ac\ud55c\ub2e4\uba74 \uadf8 \ud0a4\uc5d0 \ud574\ub2f9\ud558\ub294 \uac12\uc774 \ubcc0\uacbd" ] }, { "cell_type": "code", "collapsed": false, "input": [ "member = {'basketball':5, 'soccer':11, 'baseball':9}\n", "member['volleyball'] = 7 # \uc0c8\ub85c\uc6b4 \uc544\uc774\ud15c \uc124\uc815\n", "member['volleyball'] = 6 # \ubcc0\uacbd\n", "print member\n", "print len(member) # \uc544\uc774\ud15c\uc758 \uac1c\uc218 \ubc18\ud658 " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'soccer': 11, 'basketball': 5, 'baseball': 9, 'volleyball': 6}\n", "4\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804\uc744 \ucd9c\ub825\ud558\uba74 \uac01 \uc544\uc774\ud15c\ub4e4\uc774 \uc784\uc758\uc758 \uc21c\uc11c\ub85c \ucd9c\ub825\ub41c\ub2e4.\n", "- \uc0c8\ub85c\uc6b4 \uc544\uc774\ud15c\uc774 \ub4e4\uc5b4\uc624\uba74 \ud0a4 \ub0b4\uc6a9\uc5d0 \ub530\ub77c \uadf8 \uc21c\uc11c\uac00 \ub2ec\ub77c\uc9c4\ub2e4.\n", "- \ub0b4\ubd80\uc801\uc73c\ub85c \ud0a4 \ub0b4\uc6a9\uc5d0 \ub300\ud574 \ud574\uc26c(Hash) \uae30\ubc95\uc744 \uc0ac\uc6a9\n", " - \uac80\uc0c9 \uc18d\ub3c4\uac00 \ub9e4\uc6b0 \ube60\ub984\n", " - [\ucc38\uace0]: http://www.laurentluce.com/posts/python-dictionary-implementation/\n", "- \ud0a4\uc640 \uac12 \ub9e4\ud551\uc5d0 \ub300\ud55c \uc544\uc774\ud15c\uc744 \uc0ad\uc81c\ud560 \ub54c\uc5d0\ub294 del\uacfc \ud568\uaed8 \ud0a4\uac12 \uba85\uc2dc " ] }, { "cell_type": "code", "collapsed": false, "input": [ "member = {'basketball':5, 'soccer':11, 'baseball':9}\n", "del member['basketball'] # \ud56d\ubaa9 \uc0ad\uc81c\n", "print member" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'soccer': 11, 'baseball': 9}\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804\uc5d0 \uc785\ub825\ub418\ub294 \uac12\uc740 \uc784\uc758\uc758 \uac1d\uccb4\n", "- [\ub9e4\uc6b0 \uc911\uc694] \ud0a4\ub294 \ubcc0\uacbd \ubd88\uac00\ub2a5 (Immutable) \uc790\ub8cc\ub9cc \uac00\ub2a5\n", " - \ubb38\uc790\uc5f4, \uc22b\uc790, \ud29c\ud50c\uc740 \uac00\ub2a5\n", " - \ub9ac\uc2a4\ud2b8, \uc0ac\uc804\uc740 \ud0a4\uac00 \ub420 \uc218 \uc5c6\uc74c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "d = {}\n", "d['str'] = 'abc'\n", "d[1] = 4\n", "d[(1,2,3)] = 'tuple'\n", "d[[1,2,3]] = 'list' # \ub9ac\uc2a4\ud2b8\ub294 \ud0a4\uac00 \ub420 \uc218 \uc5c6\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'list'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'tuple'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'list'\u001b[0m \u001b[0;31m# \ub9ac\uc2a4\ud2b8\ub294 \ud0a4\uac00 \ub420 \uc218 \uc5c6\ub2e4.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "d[{1:2}] = 3 # \uc0ac\uc804\uc740 \ud0a4\uac00 \ub420 \uc218 \uc5c6\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'dict'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m3\u001b[0m \u001b[0;31m# \uc0ac\uc804\uc740 \ud0a4\uac00 \ub420 \uc218 \uc5c6\ub2e4.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'dict'" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc774\ub984\uc740 \uc0ac\uc804\uc758 \ud0a4\ub098 \uac12\uc73c\ub85c \uc0ac\uc6a9 \uac00\ub2a5\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def add(a, b):\n", " return a+b\n", "\n", "def sub(a, b):\n", " return a-b\n", "\n", "action = {0: add, 1: sub} # \ud568\uc218 \uc774\ub984\uc744 \uc0ac\uc804\uc758 \uac12\uc73c\ub85c \uc0ac\uc6a9\n", "print action[0](4, 5)\n", "print action[1](4, 5)\n", "print\n", "action2 = {add: 1, sub: 2} # \ud568\uc218 \uc774\ub984\uc744 \uc0ac\uc804\uc758 \ud0a4\ub85c \uc0ac\uc6a9\n", "print action2[add]\n", "print add(4, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "9\n", "-1\n", "\n", "1\n", "9\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804\uc744 \uc0dd\uc131\ud558\ub294 \ub2e4\ub978 \ubc29\ubc95: \ub0b4\uc7a5\ud568\uc218 dict() \uc0ac\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dict()\n", "print dict(one=1, two=2)\n", "print dict([('one', 1), ('two', 2)]) # \ucd94\ud6c4\uc5d0 \ubc30\uc6b0\ub294 items()\uc758 \uc5ed\ubcc0\ud658\uc5d0 \ud574\ub2f9\n", "print dict({'one':1, 'two':2})" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'two': 2, 'one': 1}\n", "{'two': 2, 'one': 1}\n", "{'two': 2, 'one': 1}\n" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "keys = ['one', 'two', 'three']\n", "values = (1, 2, 3)\n", "print zip(keys, values) # zip(): \ub450 \uac1c\uc758 \uc790\ub8cc\ub97c \uc21c\uc11c\ub300\ub85c \uc30d\uc73c\ub85c \ubb36\uc740 \ud29c\ud50c\ub4e4\uc758 \ub9ac\uc2a4\ud2b8 \ubc18\ud658\n", "print dict(zip(keys, values))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('one', 1), ('two', 2), ('three', 3)]\n", "{'three': 3, 'two': 2, 'one': 1}\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 02 \uc0ac\uc804 \uac1d\uccb4\uc758 \uba54\uc3d8\ub4dc\n", "***\n", "- D.keys(): \uc0ac\uc804 D\uc5d0\uc11c \ud0a4\ub4e4\uc744 \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\n", "- D.values(): \uc0ac\uc804 D\uc5d0\uc11c \uac12\ub4e4\uc744 \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\n", "- D.items(): \uc0ac\uc804 D\uc5d0\uc11c \uac01 \uc544\uc774\ud15c\uc744 \ud29c\ud50c\ud615\ud0dc\ub85c \uac00\uc838\uc640 \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\n", "- key in D: \uc0ac\uc804 D\uc548\uc5d0 key\ub97c \ud0a4\uac12\uc744 \uac00\uc9c4 \uc544\uc774\ud15c\uc774 \uc788\ub294\uc9c0 \ud655\uc778" ] }, { "cell_type": "code", "collapsed": false, "input": [ "phone = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "\n", "print phone.keys() #\ud0a4\uc758 \ub9ac\uc2a4\ud2b8 \ubc18\ud658\n", "print phone.values() #\uac12\ub4e4\uc758 \ub9ac\uc2a4\ud2b8 \ubc18\ud658\n", "print phone.items() #(\ud0a4, \uac12)\uc758 \ub9ac\uc2a4\ud2b8 \ubc18\ud658\n", "print\n", "print 'jack' in phone #'jack'\uc774 phone\uc758 \ud0a4\uc5d0 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294\uac00?\n", "print 'lee' in phone" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['jin', 'Joseph', 'jack']\n", "[1111, 6584321, 9465215]\n", "[('jin', 1111), ('Joseph', 6584321), ('jack', 9465215)]\n", "\n", "True\n", "False\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- D2 = D.copy(): \uc0ac\uc804 D\ub97c \ubcf5\uc0ac\ud558\uc5ec D2 \uc0ac\uc804\uc5d0 \ud560\ub2f9\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "phone = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "p = phone # \uc0ac\uc804 \ub808\ud37c\ub7f0\uc2a4 \ubcf5\uc0ac. \uc0ac\uc804 \uac1d\uccb4\ub294 \uacf5\uc720\ub41c\ub2e4.\n", "\n", "phone['jack'] = 1234 # phone\uc744 \ubcc0\uacbd\ud558\uba74\n", "print phone\n", "print p # p\ub3c4 \ud568\uaed8 \ubcc0\uacbd\ub41c\ub2e4.\n", "print\n", "\n", "ph = phone.copy() # \uc0ac\uc804\ubcf5\uc0ac. \ubcc4\ub3c4\uc758 \uc0ac\uc804 \uac1d\uccb4\uac00 \ub9c8\ub828\ub41c\ub2e4.\n", "phone['jack'] = 1111 # phone\uc744 \ubc14\uafd4\ub3c4\n", "print phone\n", "print ph # ph\ub294 \ubc14\ub00c\uc9c0 \uc54a\ub294\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'jin': 1111, 'Joseph': 6584321, 'jack': 1234}\n", "{'jin': 1111, 'Joseph': 6584321, 'jack': 1234}\n", "\n", "{'jin': 1111, 'Joseph': 6584321, 'jack': 1111}\n", "{'jin': 1111, 'Joseph': 6584321, 'jack': 1234}\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc8fc\uc758] D.copy()\ub294 Shallow Copy\ub97c \uc218\ud589\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "phone = {'a': [1,2,3], 'b': 4}\n", "phone2 = phone.copy()\n", "print phone\n", "print phone2\n", "print\n", "\n", "phone['b'] = 100\n", "print phone\n", "print phone2\n", "print\n", "\n", "phone['a'][0] = 100\n", "print phone\n", "print phone2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'a': [1, 2, 3], 'b': 4}\n", "{'a': [1, 2, 3], 'b': 4}\n", "\n", "{'a': [1, 2, 3], 'b': 100}\n", "{'a': [1, 2, 3], 'b': 4}\n", "\n", "{'a': [100, 2, 3], 'b': 100}\n", "{'a': [100, 2, 3], 'b': 4}\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/shallow_copy.png)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ph = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "\n", "print ph.get('jack') # 'jack'\uc5d0 \ub300\ud55c \uac12\uc744 \uc5bb\ub294\ub2e4. ph['jack']\uacfc \uac19\ub2e4.\n", "print ph.get('gslee') # 'gslee'\uc5d0 \ub300\ud55c \uac12\uc744 \uc5bb\ub294\ub2e4. \uac12\uc774 \uc5c6\ub294 \uacbd\uc6b0 None\ubc18\ud658" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "9465215\n", "None\n" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "ph = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "print ph['gslee'] # ph['gslee']\ub294 \ud0a4\uac00 \uc5c6\ub294 \uacbd\uc6b0 \uc608\uc678\ubc1c\uc0dd" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'gslee'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'jack'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m9465215\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'jin'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m1111\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Joseph'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m6584321\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mph\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'gslee'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# ph['gslee']\ub294 \ud0a4\uac00 \uc5c6\ub294 \uacbd\uc6b0 \uc608\uc678\ubc1c\uc0dd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: 'gslee'" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "ph = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "print ph.get('gslee', 5284) # \uc778\uc218\ub97c \ud558\ub098 \ub354 \uc81c\uacf5\ud558\uba74 'gslee'\uac00 \uc5c6\ub294 \uacbd\uc6b0\uc5d0 5284 \ub9ac\ud134\n", "print ph # \uc0ac\uc804\uc5d0\ub294 \ubcc0\ud654\uac00 \uc5c6\ub2e4\n", "print \n", "\n", "print ph.setdefault('gslee', 5284) # 'gslee'\uac12\uc744 \uaebc\ub0b4\ub418, \uc5c6\uc73c\uba74 \uc0c8\ub85c\uc6b4 \uc544\uc774\ud15c\uc73c\ub85c 'gslee': 5284\ub97c \ub123\uc5b4\uc8fc\uace0 \uaebc\ub0b8\ub2e4. \n", "print ph # 'gslee':5284\uac00 \uc124\uc815\ub418\uc5b4 \uc788\ub2e4. \n", "print \n", "\n", "print ph.popitem() # \uc784\uc758\uc758 \uc544\uc774\ud15c\uc744 \uaebc\ub0b8\ub2e4.\n", "print ph\n", "print ph.popitem() # \uc784\uc758\uc758 \uc544\uc774\ud15c\uc744 \uaebc\ub0b8\ub2e4.\n", "print ph \n", "print\n", "print ph.pop('jack') # \ud0a4 \uac12\uc744 \ud1b5\ud574 \ud574\ub2f9 \uc544\uc774\ud15c\uc744 \uc9c0\uc815\ud558\uc5ec \uaebc\ub0b8\ub2e4.\n", "print ph" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5284\n", "{'jin': 1111, 'Joseph': 6584321, 'jack': 9465215}\n", "\n", "5284\n", "{'jin': 1111, 'Joseph': 6584321, 'jack': 9465215, 'gslee': 5284}\n", "\n", "('jin', 1111)\n", "{'Joseph': 6584321, 'jack': 9465215, 'gslee': 5284}\n", "('Joseph', 6584321)\n", "{'jack': 9465215, 'gslee': 5284}\n", "\n", "9465215\n", "{'gslee': 5284}\n" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "phone = {'jack':9465215, 'jin':1111, 'Joseph':6584321}\n", "ph = {'kim':12312, 'lee': 9090}\n", "phone.update(ph) #\uc0ac\uc804 phone\uc758 \ub0b4\uc6a9\uc744 ph\uc73c\ub85c \ucd94\uac00 \uac31\uc2e0\n", "print phone\n", "print\n", "phone.clear() #\uc0ac\uc804\uc758 \ubaa8\ub4e0 \uc785\ub825\uc744 \uc5c6\uc564\ub2e4.\n", "print phone" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'jin': 1111, 'Joseph': 6584321, 'jack': 9465215, 'kim': 12312, 'lee': 9090}\n", "\n", "{}\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 03 \uc2ec\ubcfc \ud14c\uc774\ube14\n", "***\n", "- \\_\\_\uc2ec\ubcfc__ : Private \ubcc0\uc218\ub098 \uba54\uc18c\ub4dc" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print __name__ # \ud604\uc7ac \ubaa8\ub4c8\uc758 \uc774\ub984\n", "print\n", "import sys\n", "print sys.__name__ # sys \ubaa8\ub4c8\uc758 \uc774\ub984" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "__main__\n", "\n", "sys\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc2ec\ubcfc \ud14c\uc774\ube14: http://en.wikipedia.org/wiki/Symbol_table\n", " - \ucef4\ud30c\uc77c\ub7ec\ub098 \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc758\ud574 \uc0ac\uc6a9\ub418\ub294 \uc790\ub8cc \uad6c\uc870\ub85c\uc11c \ud504\ub85c\uadf8\ub7a8 \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \uc874\uc7ac\ud558\ub294 \uac01 \uc2dd\ubcc4\uc790 (\ubcc0\uc218 \uc774\ub984, \uc0c1\uc218 \uc774\ub984, \ud568\uc218 \uc774\ub984 \ub4f1)\uc5d0 \ub300\ud574 \uad00\ub828\ub41c \uc815\ubcf4 (\ud0c0\uc785, \ubc94\uc704(Scope), \uba54\ubaa8\ub9ac \uc704\uce58)\ub97c \ud568\uaed8 \uc800\uc7a5\ud574\ub454\ub2e4." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3-1 \uc804\uc5ed/\uc9c0\uc5ed \uc2ec\ubcfc \ud14c\uc774\ube14" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 1\n", "b = 100\n", "name = 'gslee'\n", "dic = {'Python':'Good', 'Perl':'Not Good'}" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- globals(): \uc804\uc5ed \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \ud3ec\ud568\ud55c \uc0ac\uc804 \ubc18\ud658 \n", "- locals(): \uc9c0\uc5ed \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \ud3ec\ud568\ud55c \uc0ac\uc804 \ubc18\ud658" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print globals()\n", "print locals()\n", "\n", "def func():\n", " a = 10\n", " print globals()\n", " print locals()\n", "\n", "func()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3-2 \ud074\ub798\uc2a4\uc640 \uac1d\uccb4\uc758 \uc2ec\ubcfc \ud14c\uc774\ube14\n", " - https://docs.python.org/2/library/functions.html#vars\n", " - \ub300\uc0c1.\\__dict__ : \uc784\uc758\uc758 \ub300\uc0c1\ub4e4\uc774 \uc9c0\ub2c8\uace0 \uc788\ub294 \uc2dd\ubcc4\uc790\uc640 \uadf8 \uc2dd\ubcc4\uc790\uc640 \uc5f0\ub3d9\ub41c \uac12\uc774 \uc0ac\uc804(Dictionary) \ud615\ud0dc\ub85c \uc800\uc7a5\ub418\uc5b4 \uc788\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "class C:\n", " x = 10\n", " y = 20\n", "\n", "print C.__dict__ # \ud074\ub798\uc2a4\uc758 \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \uc5bb\ub294\ub2e4.\n", "print vars(C) # vars(C)\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c C.__dict__ \uc758 \uac12\uc744 \ubc18\ud658\ud55c\ub2e4. " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'y': 20, 'x': 10, '__module__': '__main__', '__doc__': None}\n", "{'y': 20, 'x': 10, '__module__': '__main__', '__doc__': None}\n" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "c = C() # \ud074\ub798\uc2a4 C\ub85c\ubd80\ud130 \uac1d\uccb4 c \uc0dd\uc131\n", "c.x = 100\n", "c.y = 200\n", "print c.__dict__ # \ud074\ub798\uc2a4 \uc778\uc2a4\ud134\uc2a4\uc758 \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \uc5bb\ub294\ub2e4.\n", "print vars(c)\n", "print\n", "print C.__dict__ # \ud074\ub798\uc2a4\uc758 \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \uc5bb\ub294\ub2e4.\n", "print vars(C) # vars(C)\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c C.__dict__ \uc758 \uac12\uc744 \ubc18\ud658\ud55c\ub2e4. " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'y': 200, 'x': 100}\n", "{'y': 200, 'x': 100}\n", "\n", "{'y': 20, 'x': 10, '__module__': '__main__', '__doc__': None}\n", "{'y': 20, 'x': 10, '__module__': '__main__', '__doc__': None}\n" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "def f():\n", " pass\n", "\n", "f.a = 1\n", "f.b = 2\n", "print f.__dict__ # \ud568\uc218\uc758 \uc2ec\ubcfc \ud14c\uc774\ube14\uc744 \uc5bb\ub294\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'a': 1, 'b': 2}\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 04 \uc0ac\uc804\uc744 for\ubb38\uc73c\ub85c \ucc38\uc870\ud558\uae30\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804\uc758 \ubaa8\ub4e0 \ud0a4\uac12\uc744 \uc21c\ucc28\uc801\uc73c\ub85c \ucc38\uc870\ud558\ub294 \ubc29\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "D = {'a':1, 'b':2, 'c':3}\n", "for key in D.keys():\n", " print key, D[key]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a 1\n", "c 3\n", "b 2\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804 \uc790\uccb4\ub97c for\ub8e8\ud504\uc5d0 \ud65c\uc6a9\ud558\uba74 \ud0a4\uc5d0 \ub300\ud55c \ub8e8\ud504\uac00 \uc2e4\ud589\ub41c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "D = {'a':1, 'b':2, 'c':3}\n", "for key in D:\n", " print key, D[key]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a 1\n", "c 3\n", "b 2\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud0a4\uc640 \uac12\uc744 \ub3d9\uc2dc\uc5d0 \ucc38\uc870\ud558\ub824\uba74 D.items()\ub97c \ud65c\uc6a9\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for key, value in D.items():\n", " print key, value" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a 1\n", "c 3\n", "b 2\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804\uc5d0 \uc785\ub825\ub41c \uc544\uc774\ud15c\ub4e4\uc740 \uc77c\uc815\ud55c \uc21c\uc11c\uac00 \uc5c6\ub2e4.\n", "- \ud0a4\uac12\uc5d0 \ub300\ud55c \uc815\ub82c\uc740 \uc544\uc774\ud15c\ub4e4\uc744 \ub9ac\uc2a4\ud2b8\ub85c \ubf51\uc740 \ub2e4\uc74c\uc5d0 \ud574\ub2f9 \ub9ac\uc2a4\ud2b8\uc5d0 \uc788\ub294 sort() \ud568\uc218\ub97c \ud65c\uc6a9\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "D = {'a':1, 'b':2, 'c':3}\n", "items = D.items()\n", "print items\n", "print\n", "\n", "items.sort()\n", "print items\n", "print \n", "\n", "for k,v in items:\n", " print k, v" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1), ('c', 3), ('b', 2)]\n", "\n", "[('a', 1), ('b', 2), ('c', 3)]\n", "\n", "a 1\n", "b 2\n", "c 3\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "d = {'one':1, 'two':2, 'three':3}\n", "L = d.items()\n", "print L\n", "print\n", "\n", "L.sort()\n", "print L" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('three', 3), ('two', 2), ('one', 1)]\n", "\n", "[('one', 1), ('three', 3), ('two', 2)]\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub78c\ub2e4(lamda) \ud568\uc218 \ub610\ub294 \ucd95\uc57d \ud568\uc218: https://wikidocs.net/64\n", " - \uc77c\ubc18\uc801\uc778 \ud568\uc218\ub97c \ud55c \uc904\uc758 \ubb38(Statement)\ub85c \uc815\uc758\ud560 \uc218 \uc788\ub294 \uc0c8\ub85c\uc6b4 \ud568\uc218 \uc815\uc758 \ub9ac\ud130\ub7f4\n", " - \ud568\uc218 \ubab8\uccb4\uc5d0\ub294 \uc2dd(expression)\ub9cc\uc774 \uc62c \uc218 \uc788\ub2e4. \n", " - \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \ud568\uc218 \uc774\ub984\uc744 \uc815\uc758\ud558\uc9c0 \uc54a\uc73c\uba74\uc11c \uc77c\ud68c\uc131\uc73c\ub85c \ud65c\uc6a9\ud560 \ud568\uc218\ub97c \uc815\uc758\ud560 \ub54c \ud65c\uc6a9\n", " - \uad6c\ubb38\n", " - lambda \ucf64\ub9c8\ub85c \uad6c\ubd84\ub41c \uc778\uc218\ub4e4: \uc2dd(expression)\n", " -
>>> def hap(x, y):\n",
      "...   return x + y\n",
      "...\n",
      ">>> hap(10, 20)\n",
      "30\n",
      "
\n", " -
\n",
      ">>> (lambda x,y: x + y)(10, 20)\n",
      "30\n",
      "
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "d = {'three':3, 'two':2, 'one':1}\n", "L = d.items()\n", "print L\n", "print\n", "\n", "L.sort(key=lambda item:item[1]) #lamda item:item[1] ==> f(item): return item[1]\n", "print L" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('one', 1), ('three', 3), ('two', 2)]\n", "\n", "[('one', 1), ('two', 2), ('three', 3)]\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "d = {'three':3, 'two':2, 'one':1}\n", "for key, value in sorted(d.items(), key=lambda item:item[1]):\n", " print key, value" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "one 1\n", "two 2\n", "three 3\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc608\uc81c 1]\n", " - \uc0ac\uc804\uc5d0 \uc774\ub984\uacfc \uc804\ud654\ubc88\ud638\ub97c \ub4f1\ub85d\ud558\uace0 \ucd9c\ub825\ud55c\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# file : directory.py\n", "\n", "def print_menu():\n", " print '1. \uc804\ud654 \ubc88\ud638 \ucd9c\ub825'\n", " print '2. \uc804\ud654 \ubc88\ud638 \ucd94\uac00'\n", " print '3. \uc804\ud654 \ubc88\ud638 \uc0ad\uc81c'\n", " print '4. \uc804\ud654 \ubc88\ud638 \ucc3e\uae30'\n", " print '5. \uc885\ub8cc'\n", " print\n", " \n", "def print_dic(numbers):\n", " print \"\uc804\ud654\ubc88\ud638: \"\n", " for name in numbers :\n", " print \"\uc774\ub984: \", name,\" \\t\ubc88\ud638: \",numbers[name]\n", " print\n", " \n", "def add_member(numbers):\n", " print \"\uc774\ub984\uacfc \ubc88\ud638 \ucd94\uac00\"\n", " name = raw_input(\"\uc774\ub984: \")\n", " phone = raw_input(\"\ubc88\ud638: \")\n", " numbers[name] = phone\n", "\n", "def remove_member(numbers):\n", " print \"\uc774\ub984\uacfc \ubc88\ud638 \uc0ad\uc81c\"\n", " name = raw_input(\"\uc774\ub984: \")\n", " if name in numbers:\n", " del numbers[name]\n", " else:\n", " print name, \" \uc740 \uc5c6\uc2b5\ub2c8\ub2e4.\"\n", " \n", "def lookup_member(numbers):\n", " print \"\ubc88\ud638 \ucc3e\uae30\"\n", " name = raw_input(\"\uc774\ub984: \")\n", " if name in numbers:\n", " print \"\ubc88\ud638 : \", numbers[name]\n", " else :\n", " print name, \"\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\"\n", " \n", "#------------------- \uc5ec\uae30\uc11c \ubd80\ud130 \uc2e4\ud589\ub41c\ub2e4.\n", "\n", "numbers = {}\n", "menu_choice = 0\n", "print_menu()\n", "while menu_choice != 5:\n", " menu_choice = input(\"\ubc88\ud638\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694 (1-5):\")\n", " if menu_choice == 1:\n", " print_dic(numbers)\n", " elif menu_choice == 2:\n", " add_member(numbers)\n", " elif menu_choice == 3:\n", " remove_member(numbers)\n", " elif menu_choice == 4:\n", " lookup_member(numbers)\n", " if menu_choice != 5:\n", " print_menu()\n", " " ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc608\uc81c 2]\n", " - \ud568\uc218 \ub808\ud37c\ub7f0\uc2a4\ub97c \uc0ac\uc804\uc5d0 \uc800\uc7a5\ud574 \ub450\uace0 \ud574\ub2f9 \ud568\uc218\ub97c \uaebc\ub0b4\uc5b4\uc11c \ud638\ucd9c\ud55c\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "#arith.py\n", "def add(a, b):\n", " return a+b\n", "\n", "def sub(a, b):\n", " return a-b\n", "\n", "def mul(a, b):\n", " return a*b\n", "\n", "def div(a, b):\n", " return a/b\n", "\n", "def choose_menu():\n", " print 'What do you want to do?'\n", " print 'add, sub, mul, div, quit'\n", " return raw_input('Your choice: ')\n", "\n", "# \ud0a4\ub294 \uc5f0\uc0b0\uc758 \uc774\ub984, \uac12\uc740 \ud568\uc218 \uac1d\uccb4\n", "menu = {'add':add, 'sub':sub, 'mul':mul, 'div':div}\n", "choice = choose_menu()\n", "while choice != 'quit':\n", " if choice in menu :\n", " x = input('first value : ')\n", " y = input('Second value : ')\n", " print menu[choice](x,y)\n", " choice = choose_menu()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "What do you want to do?\n", "add, sub, mul, div, quit\n" ] }, { "name": "stdout", "output_type": "stream", "stream": "stdout", "text": [ "Your choice: sub\n" ] }, { "name": "stdout", "output_type": "stream", "stream": "stdout", "text": [ "first value : 1\n" ] }, { "name": "stdout", "output_type": "stream", "stream": "stdout", "text": [ "Second value : 2\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "-1\n", "What do you want to do?\n", "add, sub, mul, div, quit\n" ] } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 05 \uc9d1\ud569 \uc790\ub8cc\ud615\n", "***\n", "- set\uc740 \ubcc0\uacbd \ubd88\uac00\ub2a5(Immutable)\ud55c \uc6d0\uc18c\ub4e4\uc744 \uc9c0\ub2c8\ub294 \ubcc0\uacbd \uac00\ub2a5(Mutable)\ud55c \uac1d\uccb4\uc774\ub2e4.\n", " - \uac01 \uc6d0\uc18c\uac04\uc5d0 \uc21c\uc11c\ub294 \uc5c6\ub2e4.\n", " - \uac01 \uc6d0\uc18c\ub294 \uc911\ubcf5\ub420 \uc218 \uc5c6\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = set([1, 2, 3])\n", "print type(a)\n", "print a\n", "print\n", "\n", "b=set((1, 2, 3))\n", "print type(b)\n", "print b\n", "print\n", "\n", "c=set({'a':1, 'b':2, 'c':3})\n", "print type(c)\n", "print c\n", "print\n", "\n", "d=set({'a':1, 'b':2, 'c':3}.values())\n", "print type(d)\n", "print d" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "set([1, 2, 3])\n", "\n", "\n", "set([1, 2, 3])\n", "\n", "\n", "set(['a', 'c', 'b'])\n", "\n", "\n", "set([1, 2, 3])\n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "print set() # \ube48 set \uac1d\uccb4 \uc0dd\uc131\n", "print set([1,2,3,4,5]) # \ucd08\uae30 \uac12\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc778 \ub9ac\uc2a4\ud2b8\ub97c \ub123\uc5b4\uc900\ub2e4.\n", "print set([1,2,3,2,3,4]) # \uc911\ubcf5\ub41c \uc6d0\uc18c\ub294 \ud55c \ubc88\ub9cc \ud45c\ud604\n", "print set('abc') # \ubb38\uc790\uc5f4\uc740 \uac01 \ubb38\uc790\ub97c \uc9d1\ud569 \uc6d0\uc18c\ub85c \uc9c0\ub2cc\ub2e4. \n", "print set([(1,2,3),(4,5,6)]) # \uac01 \ud29c\ud50c\uc740 \uc6d0\uc18c\ub85c \uac00\uc9c8 \uc218 \uc788\uc74c \n", "print set([[1,2,3],[4,5,6]]) # \ubcc0\uacbd \uac00\ub2a5 \uc790\ub8cc\uc778 \ub9ac\uc2a4\ud2b8\ub294 \uc9d1\ud569\uc758 \uc6d0\uc18c\uac00 \ub420 \uc218 \uc5c6\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([])\n", "set([1, 2, 3, 4, 5])\n", "set([1, 2, 3, 4])\n", "set(['a', 'c', 'b'])\n", "set([(4, 5, 6), (1, 2, 3)])\n" ] }, { "ename": "TypeError", "evalue": "unhashable type: 'list'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'abc'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# \ubb38\uc790\uc5f4\uc740 \uac01 \ubb38\uc790\ub97c \uc9d1\ud569 \uc6d0\uc18c\ub85c \uc9c0\ub2cc\ub2e4.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# \uac01 \ud29c\ud50c\uc740 \uc6d0\uc18c\ub85c \uac00\uc9c8 \uc218 \uc788\uc74c\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# \ubcc0\uacbd \uac00\ub2a5 \uc790\ub8cc\uc778 \ub9ac\uc2a4\ud2b8\ub294 \uc9d1\ud569\uc758 \uc6d0\uc18c\uac00 \ub420 \uc218 \uc5c6\ub2e4.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "print set(((1, 2), (1, 2))) # \ub3d9\uc77c\ud55c \ub0b4\uc6a9\uc758 \ud29c\ud50c 2\uac1c\ub294 \uc9d1\ud569 \ub0b4\uc5d0 \ud55c \uac1c\uc758 \uc6d0\uc18c\ub85c \uc800\uc7a5\ub41c\ub2e4.\n", "print set([(1, 2), (1, 2)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([(1, 2)])\n", "set([(1, 2)])\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- set\uc758 \uae30\ubcf8 \uc5f0\uc0b0 \uba54\uc18c\ub4dc\uc640 \uc5f0\uc0b0\uc790\n", "\n", "| set \uc5f0\uc0b0 | \ub3d9\uc77c \uc5f0\uc0b0\uc790 | \ub0b4\uc6a9 |\n", "|---------------------------|-------------|-----------------------------|\n", "| len(s) | | \uc6d0\uc18c\uc758 \uac1c\uc218 |\n", "| x in s | | x\uac00 \uc9d1\ud569 s\uc758 \uc6d0\uc18c\uc778\uac00? |\n", "| x not in s | | x\uac00 \uc9d1\ud569 s\uc758 \uc6d0\uc18c\uac00 \uc544\ub2cc\uac00? |\n", "| s.issubset(t) | s <= t | s\uac00 t\uc758 \ubd80\ubd84\uc9d1\ud569\uc778\uac00? |\n", "| s.issuperset(t) | s >= t | s\uac00 t\uc758 \uc288\ud37c\uc9d1\ud569\uc778\uac00? |\n", "| s.union(t) | s | t | \uc0c8\ub85c\uc6b4 s\uc640 t\uc758 \ud569\uc9d1\ud569 |\n", "| s.intersection(t) | s & t | \uc0c8\ub85c\uc6b4 s\uc640 t\uc758 \uad50\uc9d1\ud569 |\n", "| s.difference(t) | s - t | \uc0c8\ub85c\uc6b4 s\uc640 t\uc758 \ucc28\uc9d1\ud569 |\n", "| s.symmetric_difference(t) | s ^ t | \uc0c8\ub85c\uc6b4 s\uc640 t\uc758 \ubc30\ud0c0\uc9d1\ud569 |\n", "| s.copy() | | \uc9d1\ud569 s\uc758 shallow \ubcf5\uc0ac |" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4,5,6,7,8,9])\n", "\n", "print len(A) # \uc9d1\ud569\uc758 \uc6d0\uc18c\uc758 \uc218\n", "print 5 in A # \uba64\ubc84\uc2ed \ud14c\uc2a4\ud2b8\n", "print 10 not in A # \uba64\ubc84\uc2ed \ud14c\uc2a4\ud2b8" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "9\n", "True\n", "True\n" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "B = set([4,5,6,10,20,30])\n", "C = set([10,20,30])\n", "\n", "print C.issubset(B) # C\uac00 B\uc758 \ubd80\ubd84\uc9d1\ud569?\n", "print C <= B\n", "print B.issuperset(C) # B\uac00 C\ub97c \ud3ec\ud568\ud558\ub294 \uc9d1\ud569?\n", "print B >= C\n", "print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True\n", "True\n", "True\n", "True\n", "\n" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4,5,6,7,8,9])\n", "B = set([4,5,6,10,20,30])\n", "\n", "print A.union(B) #A\uc640 B\uc758 \ud569\uc9d1\ud569\n", "print A|B\n", "print A\n", "print\n", "\n", "print A.intersection(B) #A\uc640 B\uc758 \uad50\uc9d1\ud569\n", "print A&B #A\uc640 B\uc758 \uad50\uc9d1\ud569\n", "print A\n", "print\n", "\n", "print A.difference(B) #A - B (\ucc28\uc9d1\ud569)\n", "print A-B #A - B (\ucc28\uc9d1\ud569)\n", "print A\n", "print\n", "\n", "print A.symmetric_difference(B) #\ubca0\ud0c0\uc9d1\ud569. A,B \ud569\uc9d1\ud569\uc5d0\uc11c \uad50\uc9d1\ud569\uc758 \uc6d0\uc18c\ub97c \uc81c\uc678\ud55c \uc9d1\ud569\n", "print A^B\n", "print A" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30])\n", "set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30])\n", "set([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", "\n", "set([4, 5, 6])\n", "set([4, 5, 6])\n", "set([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", "\n", "set([1, 2, 3, 7, 8, 9])\n", "set([1, 2, 3, 7, 8, 9])\n", "set([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", "\n", "set([1, 2, 3, 7, 8, 9, 10, 20, 30])\n", "set([1, 2, 3, 7, 8, 9, 10, 20, 30])\n", "set([1, 2, 3, 4, 5, 6, 7, 8, 9])\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4,5,6,7,8,9])\n", "D = A.copy() # Shallow \ubcf5\uc0ac\n", "print D\n", "print\n", "\n", "print A == D #\uc790\ub8cc\uac12 \ube44\uad50\n", "print A is D #\uac1d\uccb4 \ub3d9\ub4f1\uc131 \ube44\uad50" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", "\n", "True\n", "False\n" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- set\uc740 \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc774 \uc544\ub2c8\ubbc0\ub85c \uc778\ub371\uc2f1, \uc2ac\ub77c\uc774\uc2f1, \uc815\ub82c \ub4f1\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4,5,6,7,8,9])\n", "print A[0]" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'set' object does not support indexing", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mA\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mA\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'set' object does not support indexing" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "print A[1:4]" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'set' object has no attribute '__getitem__'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mA\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'set' object has no attribute '__getitem__'" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "print A.sort()" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'set' object has no attribute 'sort'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: 'set' object has no attribute 'sort'" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc9d1\ud569\uc744 \ub9ac\uc2a4\ud2b8\ub098 \ud29c\ud50c\ub85c \ubcc0\uacbd\uac00\ub2a5\n", " - \uc9d1\ud569\uc5d0 \uc778\ub371\uc2f1, \uc2ac\ub77c\uc774\uc2f1, \uc815\ub82c \ub4f1\uc744 \uc801\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \ub9ac\uc2a4\ud2b8\ub098 \ud29c\ud50c\ub85c \ubcc0\uacbd\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print list(A)\n", "print tuple(A)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "(1, 2, 3, 4, 5, 6, 7, 8, 9)\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud558\uc9c0\ub9cc \uc9d1\ud569\uc5d0 for ~ in \uc5f0\uc0b0\uc740 \uc801\uc6a9 \uac00\ub2a5\ud558\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4,5,6,7,8,9])\n", "for ele in A:\n", " print ele," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2 3 4 5 6 7 8 9\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- set\uc740 \ubcc0\uacbd \uac00\ub2a5(Mutable)\ud55c \uc790\ub8cc \uad6c\uc870 \uac1d\uccb4 \n", "- \ub2e4\uc74c \uba54\uc18c\ub4dc\ub4e4\uc740 set\uc744 \ubcc0\uacbd\ud558\ub294 \uc9d1\ud569 \uc790\ub8cc \uad6c\uc870 \uba54\uc18c\ub4dc\ub4e4\uc784\n", "\n", "| set \uc5f0\uc0b0 | \ub3d9\uc77c \uc5f0\uc0b0\uc790 | \ub0b4\uc6a9 |\n", "|---------------------------|-------------|-----------------------------|\n", "| s.update(t) | s |= t | s\uc640 t\uc758 \ud569\uc9d1\ud569\uc744 s\uc5d0 \uc800\uc7a5 |\n", "| s.intersection_update(t) | s &= t | s\uc640 t\uc758 \uad50\uc9d1\ud569\uc744 s\uc5d0 \uc800\uc7a5 |\n", "| s.difference_update(t) | s -= t | s\uc640 t\uc758 \ucc28\uc9d1\ud569\uc744 s\uc5d0 \uc800\uc7a5 |\n", "| s.symmetric_difference_update(t)| s ^= t | s\uc640 t\uc758 \ubc30\ud0c0\uc9d1\ud569\uc744 s\uc5d0 \uc800\uc7a5 |\n", "| s.add(x) | | \uc6d0\uc18c x\ub97c \uc9d1\ud569 s\uc5d0 \ucd94\uac00 |\n", "| s.remove(x) | | \uc6d0\uc18c x\ub97c \uc9d1\ud569 s\uc5d0\uc11c \uc81c\uac70, \uc6d0\uc18c x\uac00 \uc9d1\ud569 s\uc5d0 \uc5c6\uc73c\uba74 \uc608\uc678 \ubc1c\uc0dd |\n", "| s.discard(x) | | \uc6d0\uc18c x\ub97c \uc9d1\ud569 s\uc5d0\uc11c \uc81c\uac70 |\n", "| s.pop() | | \uc784\uc758\uc758 \uc6d0\uc18c\ub97c \uc9d1\ud569 s\uc5d0\uc11c \uc81c\uac70, \uc9d1\ud569 s\uac00 \uacf5\uc9d1\ud569\uc774\uba74 \uc608\uc678 \ubc1c\uc0dd |\n", "| s.clear() | | \uc9d1\ud569 s\uc758 \ubaa8\ub4e0 \uc6d0\uc18c \uc81c\uac70 |" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = set([1,2,3,4])\n", "B = set([3,4,5,6])\n", "\n", "A.update(B) # A\uc5d0 B \uc9d1\ud569\uc758 \uc6d0\uc18c\ub97c \ucd94\uac00 \uc2dc\ud0b4\n", "print A\n", "\n", "A.intersection_update([4,5,6,7,8]) # &=\n", "print A\n", "\n", "A.difference_update([6,7,8]) # -=\n", "print A\n", "\n", "A.symmetric_difference_update([5,6,7]) # ^=\n", "print A\n", "\n", "A.add(8) # \uc6d0\uc18c \ucd94\uac00\n", "print A\n", "\n", "A.remove(8) # \uc6d0\uc18c \uc81c\uac70\n", "print A" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([1, 2, 3, 4, 5, 6])\n", "set([4, 5, 6])\n", "set([4, 5])\n", "set([4, 6, 7])\n", "set([8, 4, 6, 7])\n", "set([4, 6, 7])\n" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "A.remove(10) #\uc5c6\ub294 \uc6d0\uc18c\ub97c \uc81c\uac70\ud558\uba74 KeyError \ubc1c\uc0dd" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "10", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#\uc5c6\ub294 \uc6d0\uc18c\ub97c \uc81c\uac70\ud558\uba74 KeyError \ubc1c\uc0dd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: 10" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "A.discard(10) #remove\uc640 \uac19\uc73c\ub098 \uc608\uc678\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc74c\n", "A.discard(6) #\uc6d0\uc18c 6\uc81c\uac70\n", "print A\n", "\n", "A.pop() #\uc784\uc758\uc758 \uc6d0\uc18c \ud558\ub098 \uaebc\ub0b4\uae30\n", "print A \n", "\n", "A = set([1,2,3,4])\n", "A.clear() #\uc6d0\uc18c\ub4e4 \uc5c6\uc560\uae30\n", "print A" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([4, 7])\n", "set([7])\n", "set([])\n" ] } ], "prompt_number": 41 } ], "metadata": {} } ] }