{ "metadata": { "name": "", "signature": "sha256:1338f495dde553c2250cd60e276c6ded83f9c4519620d9b1baca0efd4d118d92" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "***\n", "# 6. \ud29c\ud50c(Tuples)\n", "***\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 01 \ud29c\ud50c\uc758 \uc5f0\uc0b0\n", "***\n", "- \ud29c\ud50c: \uc21c\uc11c\uc788\ub294 \uc784\uc758\uc758 \uac1d\uccb4 \ubaa8\uc74c (\uc2dc\ud000\uc2a4\ud615)\n", "- \ub9ac\uc2a4\ud2b8\uc640\uc758 \ucc28\uc774: \ud29c\ud50c\uc778 \ubcc0\uacbd \ubd88\uac00\ub2a5(Immutable)\n", "- \uc2dc\ud000\uc2a4\ud615\uc774 \uac00\uc9c0\ub294 \ub2e4\uc74c \uc5f0\uc0b0 \ubaa8\ub450 \uc9c0\uc6d0\n", " - \uc778\ub371\uc2f1, \uc2ac\ub77c\uc774\uc2f1, \uc5f0\uacb0, \ubc18\ubcf5, \uba64\ubc84\uc27d \ud14c\uc2a4\ud2b8" ] }, { "cell_type": "code", "collapsed": false, "input": [ "t1 = () # \ube44\uc5b4\uc788\ub294 \ud29c\ud50c\n", "t2 = (1,2,3) # \uad04\ud638 \uc0ac\uc6a9\n", "\n", "t3 = 1,2,3 # \uad04\ud638\uac00 \uc5c6\uc5b4\ub3c4 \ud29c\ud50c\uc774 \ub428\n", "print type(t1), type(t2), type(t3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " \n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "r = (1,) # \uc790\ub8cc\uac00 \ud55c \uac1c\uc77c \ub54c\ub294 \ubc18\ub4dc\uc2dc \ucf64\ub9c8\uac00 \uc788\uc5b4\uc57c \ud55c\ub2e4.\n", "r = 1, # \uad04\ud638\ub294 \uc5c6\uc5b4\ub3c4 \ucf64\ub9c8\ub294 \uc788\uc5b4\uc57c \ud55c\ub2e4." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "t = (1, 2, 3)\n", "print t * 2 # \ubc18\ubcf5\n", "print t + ('PyKUG', 'users') # \uc5f0\uacb0\n", "print t[0], t[1:3] # \uc778\ub371\uc2f1, \uc2ac\ub77c\uc774\uc2f1\n", "print len(t) # \uae38\uc774\n", "print 1 in t # \uba64\ubc84\uc2ed \ud14c\uc2a4\ud2b8" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(1, 2, 3, 1, 2, 3)\n", "(1, 2, 3, 'PyKUG', 'users')\n", "1 (2, 3)\n", "3\n", "True\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "t[0] = 100 # \ud29c\ud50c\uc740 \ubcc0\uacbd \ubd88\uac00\ub2a5, \uc5d0\ub7ec\ubc1c\uc0dd" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "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[0mt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m100\u001b[0m \u001b[0;31m# \ud29c\ud50c\uc740 \ubcc0\uacbd \ubd88\uac00\ub2a5, \uc5d0\ub7ec\ubc1c\uc0dd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "t = (12345, 54321, 'hello!') \n", "u = t, (1, 2, 3, 4, 5) # \ud29c\ud50c \uc548 \uc6d0\uc18c\ub85c \ub2e4\ub978 \ud29c\ud50c\uc744 \uac00\uc9c8 \uc218 \uc788\uc74c\n", "print u\n", "\n", "t2 = [1, 2, 3] # \ud29c\ud50c \uc548 \uc6d0\uc18c\ub85c \ub9ac\uc2a4\ud2b8 \uac00\uc9c8 \uc218 \uc788\uc74c \n", "u2 = t2, (1, 2, 4)\n", "print u2\n", "\n", "t3 = {1:\"abc\", 2:\"def\"} # \ud29c\ud50c \uc548 \uc6d0\uc18c\ub85c \uc0ac\uc804 \uac00\uc9c8 \uc218 \uc788\uc74c \n", "u3 = t3, (1, 2, 3)\n", "print u3" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))\n", "([1, 2, 3], (1, 2, 4))\n", "({1: 'abc', 2: 'def'}, (1, 2, 3))\n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "x, y, z = 1, 2, 3 # \ud29c\ud50c\uc744 \uc774\uc6a9\ud55c \ubcf5\uc218 \uac1c\uc758 \uc790\ub8cc \ud560\ub2f9\n", "print type(x), type(y), type(z)\n", "print x\n", "print y\n", "print z" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " \n", "1\n", "2\n", "3\n" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "x = 1\n", "y = 2\n", "x, y = y, x # \ud29c\ud50c\uc744 \uc774\uc6a9\ud55c \ub450 \uc790\ub8cc\uc758 \uac12 \ubcc0\uacbd\n", "x, y" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "(2, 1)" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 02 \ud328\ud0b9\uacfc \uc5b8\ud328\ud0b9\n", "***\n", "- \ud328\ud0b9 (Packing): \ud558\ub098\uc758 \ud29c\ud50c \uc548\uc5d0 \uc5ec\ub7ec \uac1c\uc758 \ub370\uc774\ud130\ub97c \ub123\ub294 \uc791\uc5c5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "t = 1, 2, 'hello'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc5b8\ud328\ud0b9 (Unpacking): \ud558\ub098\uc758 \ud29c\ud50c\uc5d0\uc11c \uc5ec\ub7ec \uac1c\uc758 \ub370\uc774\ud130\ub97c \ud55c\uaebc\ubc88\uc5d0 \uaebc\ub0b4\uc640 \uac01\uac01 \ubcc0\uc218\uc5d0 \ud560\ub2f9\ud558\ub294 \uc791\uc5c5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x, y, z = t" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub9ac\uc2a4\ud2b8\ub85c\ub3c4 \ube44\uc2b7\ud55c \uc791\uc5c5\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc, \ub2e8\uc21c \ud328\ud0b9/\uc5b8\ud328\ud0b9 \uc791\uc5c5\ub9cc\uc744 \ubaa9\uc801\uc73c\ub85c \ud55c\ub2e4\uba74 \ud29c\ud50c \uc0ac\uc6a9 \ucd94\ucc9c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['foo', 'bar', 4, 5]\n", "[x, y, z, w] = a" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 03 \ub9ac\uc2a4\ud2b8\uc640\uc758 \uacf5\ud1b5\uc810\uacfc \ucc28\uc774\uc810\n", "***\n", "- \ud29c\ud50c\uacfc \ub9ac\uc2a4\ud2b8\uc640\uc758 \uacf5\ud1b5\uc810\n", " - \uc6d0\uc18c\ub85c\uc11c \uc784\uc758\uc758 \uac1d\uccb4\ub97c \uc800\uc7a5\n", " - \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\n", " - \uc778\ub371\uc2f1, \uc2ac\ub77c\uc774\uc2f1, \uc5f0\uacb0, \ubc18\ubcf5, \uba64\ubc84\uc27d \ud14c\uc2a4\ud2b8 \uc5f0\uc0b0 \uc9c0\uc6d0\n", " \n", "- \ub9ac\uc2a4\ud2b8\uc640 \ub2e4\ub978 \ud29c\ud50c\ub9cc\uc758 \ud2b9\uc9d5\n", " - \ubcc0\uacbd \ubd88\uac00\ub2a5 (Immutable)\n", " - \uba54\uc18c\ub4dc\ub97c \uac00\uc9c0\uc9c0 \uc54a\ub294\ub2e4.\n", "\n", "- list() \uc640 tuple() \ub0b4\uc7a5 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub9ac\uc2a4\ud2b8\uc640 \ud29c\ud50c\uc744 \uc0c1\ud638 \ubcc0\ud658\ud560 \uc218 \uc788\uc74c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "T = (1,2,3,4,5)\n", "L = list(T)\n", "L[0] = 100\n", "print L\n", "\n", "T = tuple(L)\n", "print T" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[100, 2, 3, 4, 5]\n", "(100, 2, 3, 4, 5)\n" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 04 \ud29c\ud50c\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 (\uc911\uc694)\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1) \ud568\uc218\uac00 \ud558\ub098 \uc774\uc0c1\uc758 \uac12\uc744 \ub9ac\ud134\ud558\ub294 \uacbd\uc6b0" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def calc(a, b):\n", " return a+b, a*b\n", "\n", "x, y = calc(5, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2) \ubb38\uc790\uc5f4 \ud3ec\uba67\ud305" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 'id : %s, name : %s' % ('gslee', 'GangSeong')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "id : gslee, name : GangSeong\n" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3) \ud568\uc218\uc5d0 \uc5ec\ub7ec \uc778\uc218\ub97c \ub118\uae30\ub294 \uacbd\uc6b0" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def calc(a, b):\n", " return a+b, a*b\n", "\n", "args = (4,5)\n", "calc(*args)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "(9, 20)" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4) \uace0\uc815\ub41c \uac12\uc744 \uc30d\uc73c\ub85c \ud45c\ud604\ud558\ub294 \uacbd\uc6b0" ] }, { "cell_type": "code", "collapsed": false, "input": [ "d = {'one':1, 'two':2}\n", "d.items()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "[('two', 2), ('one', 1)]" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 05 \uacbd\ub85c\uba85 \ub2e4\ub8e8\uae30 (os.path \ubaa8\ub4c8)\n", "***" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "p = os.path.abspath('python06.ipynb') # \uc0c1\ub300\uacbd\ub85c\ub97c \uc808\ub300\uacbd\ub85c\ub85c \ubcc0\ud658\n", "print p\n", "print\n", "print os.path.exists(p) # \ud30c\uc77c\uc758 \uc874\uc7ac \uc5ec\ubd80 \ubc18\ud658\n", "print os.path.getsize(p) # \ud30c\uc77c \ud06c\uae30 \ubc18\ud658\n", "print os.path.split(p) # (\ub514\ub809\ud1a0\ub9ac\uba85, \ud30c\uc77c\uba85)\uc73c\ub85c \ubd84\ub9ac\ud558\uc5ec \ud29c\ud50c \ubc18\ud658\n", "print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/Users/yhhan/git/ipython/python06.ipynb\n", "\n", "True\n", "19213\n", "('/Users/yhhan/git/ipython', 'python06.ipynb')\n", "\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "print os.path.join(os.sep + \"work\", 'test.txt') # \ub514\ub809\ud1a0\ub9ac\uc640 \ud30c\uc77c\uba85 \uacb0\ud569\n", "print\n", "print os.path.normpath(os.sep + \"Users\" + os.sep + \"python\" + os.sep + \".\" + os.sep + \"test.txt\") # \uacbd\ub85c\uba85 \uc815\uaddc\ud654\n", "print\n", "print os.path.splitext(os.sep + \"Users\" + os.sep + \"python\" + os.sep + \"test.txt\") # \uacbd\ub85c\uba85\uc5d0\uc11c \ud655\uc7a5\uc790\ub97c \ubd84\ub9ac\ud558\uc5ec \ud29c\ud50c \ubc18\ud658 " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/work/test.txt\n", "\n", "/Users/python/test.txt\n", "\n", "('/Users/python/test', '.txt')\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\ucc38\uace0] \uc6b4\uc601 \uccb4\uc81c\uc758 \ub3c5\ub9bd\uc131\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud558\uc5ec os \ubaa8\ub4c8 \ub0b4\ubd80\uc5d0 \uad00\ub9ac\ud558\ub294 \ubb38\uc790\n", " - os.linesep: \ud30c\uc77c\uc758 \ub77c\uc778 \ubd84\ub9ac \ubb38\uc790\n", " - \uc708\ub3c4\uc6b0: \"\\r\\n\"\n", " - \ub9ac\ub205\uc2a4, Mac: \"\\n\"\n", " - os.sep: \uacbd\ub85c\uba85\uc5d0\uc11c \uac01 \uc694\uc18c\ub4e4\uc744 \ubd84\ub9ac\ud558\ub294 \ubb38\uc790\n", " - \uc708\ub3c4\uc6b0: \"\\\"\n", " - \ub9ac\ub205\uc2a4, Mac: \"/\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 06 URL \ub2e4\ub8e8\uae30(urlparse \ubaa8\ub4c8)\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-1 urlparse()\n", "- url\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \ubd84\ub9ac\ud558\uc5ec \ubc18\ud658\ud55c\ub2e4.\n", " - (scheme, network location, path, parameters, query, fragment identifier)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urlparse\n", "\n", "a = 'http://some.where.or.kr:8080/a/b/c.html;param?x=1&y=2#fragment'\n", "b = urlparse.urlparse(a)\n", "print type(b)\n", "print b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "ParseResult(scheme='http', netloc='some.where.or.kr:8080', path='/a/b/c.html', params='param', query='x=1&y=2', fragment='fragment')\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-2 urlunparse()\n", "- \ud29c\ud50c\ub85c\ub41c \uac01 \uc131\ubd84\ub4e4\uc744 \ud558\ub098\uc758 url\ub85c \uc5ed\ubcc0\ud658\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urlparse\n", "\n", "a = 'http://some.where.or.kr:8080/a/b/c.html;param?x=1&y=2#fragment'\n", "u = urlparse.urlparse(a)\n", "\n", "print urlparse.urlunparse(u)\n", "print\n", "\n", "l = [\"http\", \"link.koreatech.ac.kr\", \"index.html\", \"\", \"x=1&y=2\", \"frag\"]\n", "print urlparse.urlunparse(l)\n", "print\n", "\n", "l2 = (\"http\", \"link.koreatech.ac.kr\", \"index.html\", \"\", \"x=1&y=2\", \"frag\")\n", "print urlparse.urlunparse(l2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "http://some.where.or.kr:8080/a/b/c.html;param?x=1&y=2#fragment\n", "\n", "http://link.koreatech.ac.kr/index.html?x=1&y=2#frag\n", "\n", "http://link.koreatech.ac.kr/index.html?x=1&y=2#frag\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\ubb38\uc81c] a \ubb38\uc790\uc5f4\uc5d0\uc11c c.html\uacfc param\uc744 \uc81c\uc678\ud55c url\uc744 \ucd9c\ub825\ud558\ub77c." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urlparse\n", "import os\n", "\n", "a = 'http://some.where.or.kr:8080/a/b/c.html;param?x=1&y=2#fragment'\n", "u = urlparse.urlparse(a)\n", "print u\n", "print\n", "\n", "lu = list(u)\n", "print lu\n", "print\n", "\n", "lu[2] = os.path.split(lu[2])[0] # '/a/b/c.html'\uc744 '/a/b'\uc640 'c.html'\ub85c \ubd84\ub9ac\n", "lu[3] = ''\n", "print lu\n", "print\n", "\n", "b = urlparse.urlunparse(lu)\n", "print b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "ParseResult(scheme='http', netloc='some.where.or.kr:8080', path='/a/b/c.html', params='param', query='x=1&y=2', fragment='fragment')\n", "\n", "['http', 'some.where.or.kr:8080', '/a/b/c.html', 'param', 'x=1&y=2', 'fragment']\n", "\n", "['http', 'some.where.or.kr:8080', '/a/b', '', 'x=1&y=2', 'fragment']\n", "\n", "http://some.where.or.kr:8080/a/b?x=1&y=2#fragment\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-3 urljoin()\n", "- \uae30\ubcf8 URL\uacfc \uc0c1\ub300 URL\uc744 \uc5f0\uacb0\ud558\uc5ec \uc808\ub300 URL\uc744 \uc0dd\uc131\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "b = 'http://some.where.or.kr:8080/a/b/c.html?x=1'\n", "urlparse.urljoin(b, 'd.html')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 53, "text": [ "'http://some.where.or.kr:8080/a/b/d.html'" ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "b = 'http://some.where.or.kr:8080/a/b/c.html?x=1'\n", "urlparse.urljoin(b, '/')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "'http://some.where.or.kr:8080/'" ] } ], "prompt_number": 23 } ], "metadata": {} } ] }