{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a936c916",
   "metadata": {},
   "source": [
    "### 리스트 컴프리헨션"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fc9b5294",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n"
     ]
    }
   ],
   "source": [
    "square = [ x**2 for x in range(10)]\n",
    "print(square)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0f88e720",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]\n"
     ]
    }
   ],
   "source": [
    "combs = []\n",
    "for x in [1,2,3]:\n",
    "    for y in [3,1,4]:\n",
    "        if x != y:\n",
    "            combs.append((x, y))\n",
    "print(combs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3453577b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]\n"
     ]
    }
   ],
   "source": [
    "combs = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]\n",
    "print(combs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b954da09",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27]\n"
     ]
    }
   ],
   "source": [
    "gugudan = [ x*y for x in [2,3] for y in range(1,10) ]\n",
    "print(gugudan)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f5d08faa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-8, -4, 0, 4, 8]\n"
     ]
    }
   ],
   "source": [
    "vec = [-4, -2, 0, 2, 4]\n",
    "a = [x*2 for x in vec]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2acfa736",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 2, 4]\n"
     ]
    }
   ],
   "source": [
    "a = [ x for x in vec if x>=0]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "017df0d3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4, 2, 0, 2, 4]\n"
     ]
    }
   ],
   "source": [
    "a = [ abs(x) for x in vec ]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "cbf83ddf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['banana', 'loganberry', 'passion fruit']\n"
     ]
    }
   ],
   "source": [
    "freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']\n",
    "a = [x.strip() for x in freshfruit]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "90fbdd28",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]\n"
     ]
    }
   ],
   "source": [
    "a = [(x, x**2) for x in range(6)]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "b93a2d0e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'tuple'>\n",
      "<class 'tuple'>\n",
      "(1, 2)\n"
     ]
    }
   ],
   "source": [
    "a = (1,2)\n",
    "print(type(a))\n",
    "b = 1,2  # 튜플 패킹\n",
    "print(type(b))\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "6ffffa85",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]\n"
     ]
    }
   ],
   "source": [
    "a = [(x, x**2) for x in range(6)]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "0595c73f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n"
     ]
    }
   ],
   "source": [
    "vec = [[1,2,3], [4,5,6], [7,8,9]]\n",
    "a = [num for elem in vec for num in elem]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "da4e3f94",
   "metadata": {},
   "outputs": [],
   "source": [
    "matrix = [\n",
    "             [1, 2, 3, 4],\n",
    "             [5, 6, 7, 8],\n",
    "             [9, 10, 11, 12],\n",
    "         ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "8571bca4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]\n"
     ]
    }
   ],
   "source": [
    "a=[[row[i] for row in matrix] for i in range(4)]  #[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "7a761baa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]\n"
     ]
    }
   ],
   "source": [
    "transposed = []\n",
    "for i in range(4):\n",
    "    transposed.append([row[i] for row in matrix])\n",
    "print(transposed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "f084a092",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1  5  9]\n",
      " [ 2  6 10]\n",
      " [ 3  7 11]\n",
      " [ 4  8 12]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "matrix = np.array([\n",
    "             [1, 2, 3, 4],\n",
    "             [5, 6, 7, 8],\n",
    "             [9, 10, 11, 12],\n",
    "         ])\n",
    "\n",
    "print(matrix.T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "39f2da9c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]\n"
     ]
    }
   ],
   "source": [
    "# [[row[i] for row in matrix] for i in range(4)] \n",
    "\n",
    "transposed = []\n",
    "for i in range(4):\n",
    "    transposed_row = []\n",
    "    for row in matrix:\n",
    "        transposed_row.append(row[i])\n",
    "    transposed.append(transposed_row)\n",
    "\n",
    "print(transposed)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "85fae393",
   "metadata": {},
   "source": [
    "### 튜플 응용"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "820ca6be",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(12345, 54321, 'hello!')\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "12345"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t = 12345, 54321, 'hello!' # 튜플 패킹\n",
    "print(t)\n",
    "t[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "18686a46",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))\n"
     ]
    }
   ],
   "source": [
    "u = t, (1, 2, 3, 4, 5)\n",
    "print(u)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "68370884",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'tuple' object does not support item assignment",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-40-d739abe3b757>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mt\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m88888\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment"
     ]
    }
   ],
   "source": [
    "t[0] = 88888"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "37283658",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'tuple' object doesn't support item deletion",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-41-542f9bb8f15e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mdel\u001b[0m \u001b[0mt\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m: 'tuple' object doesn't support item deletion"
     ]
    }
   ],
   "source": [
    "del t[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "61195340",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([2, 2, 3], [3, 2, 1])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v = ([1, 2, 3], [3, 2, 1])\n",
    "# v[0] = 2\n",
    "v[0][0] = 2\n",
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "20904608",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'tuple'>\n"
     ]
    }
   ],
   "source": [
    "empty = ()\n",
    "print(type(empty))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "28463b83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'tuple'>\n",
      "('hello',)\n"
     ]
    }
   ],
   "source": [
    "singleton = 'hello',\n",
    "print(type(singleton))\n",
    "print(singleton)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "c6572f9d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3\n"
     ]
    }
   ],
   "source": [
    "t = 1,2,3    # 튜플 패킹\n",
    "x, y, z = t  # 튜플 언패킹\n",
    "print(x,y,z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "2e3b184e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3\n"
     ]
    }
   ],
   "source": [
    "x, y, z = 1,2,3\n",
    "print(x,y,z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "bca38d89",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 1 1 2 3 5 8 "
     ]
    }
   ],
   "source": [
    "a = 0\n",
    "b = 1\n",
    "while a < 10:\n",
    "    print(a, end=' ')\n",
    "    c = a+b\n",
    "    a = b\n",
    "    b = c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "a8b1c6d1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 1 1 2 3 5 8 "
     ]
    }
   ],
   "source": [
    "a = 0\n",
    "b = 1\n",
    "while a < 10:\n",
    "    print(a, end=' ')\n",
    "    a, b = b, a+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "032a9e5f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4 3\n"
     ]
    }
   ],
   "source": [
    "a = 3\n",
    "b = 4\n",
    "\n",
    "t = a\n",
    "a = b\n",
    "b = t\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "9f1f1e19",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4 3\n"
     ]
    }
   ],
   "source": [
    "a = 3\n",
    "b = 4\n",
    "\n",
    "b,a = a,b\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "52ab59f7",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'str'>\n",
      "50\n",
      "<class 'str'>\n",
      "51\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "print(type(\"a\"))\n",
    "print(sys.getsizeof(\"a\"))\n",
    "\n",
    "print(type(\"ab\"))\n",
    "print(sys.getsizeof(\"ab\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "575768f9",
   "metadata": {},
   "source": [
    "### 문자열 함수"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "31de1edb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello hello world\n",
      "17\n",
      "HELLO HELLO WORLD\n",
      "hello hello world\n",
      "Hello hello world\n",
      "Hello Hello World\n",
      "1\n",
      "0\n",
      "6\n",
      "False\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "a = \"hello hello world\"\n",
    "print(a)\n",
    "print(len(a))\n",
    "print(a.upper())\n",
    "print(a.lower())\n",
    "print(a.capitalize())\n",
    "print(a.title())\n",
    "print(a.count('wor'))\n",
    "print(a.find(\"hel\"))\n",
    "print(a.rfind('hel'))\n",
    "print(a.startswith('world'))\n",
    "print(a.endswith('world'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "1ddf29e3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[hello]\n",
      "[   hello]\n",
      "[hello   ]\n"
     ]
    }
   ],
   "source": [
    "a = \"   hello   \"\n",
    "print(\"[\"+a.strip()+\"]\")\n",
    "print(\"[\"+a.rstrip()+\"]\")\n",
    "print(\"[\"+a.lstrip()+\"]\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "a3b70e80",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "12 23 34\n",
      "['12', '23', '34']\n"
     ]
    }
   ],
   "source": [
    "a = input().split()\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "f36ea326",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['hello', 'world', 'how', 'are', 'you']\n"
     ]
    }
   ],
   "source": [
    "a = \"hello world how are you\"\n",
    "b = a.split()\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "b2a701f0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['010', '1234', '5678']\n"
     ]
    }
   ],
   "source": [
    "hp = \"010-1234-5678\"\n",
    "b = hp.split(\"-\")\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "1e9892ec",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['192', '168', '56', '1']\n"
     ]
    }
   ],
   "source": [
    "ip = \"192.168.56.1\"\n",
    "b = ip.split(\".\")\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "7bdff597",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "숫자 : 1234\n"
     ]
    }
   ],
   "source": [
    "a = \"1234\"\n",
    "if a.isdigit():\n",
    "    print(\"숫자 : %d\"%(int(a)))\n",
    "else :\n",
    "    print(\"숫자 아님\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f4759b2",
   "metadata": {},
   "source": [
    "### 문자열 역 슬레쉬 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "f925d8e7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"Isn't,\" they said.\n"
     ]
    }
   ],
   "source": [
    "print('\"Isn\\'t,\" they said.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "d3ca9a63",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "First line.\n",
      "Second line.\n"
     ]
    }
   ],
   "source": [
    "s = 'First line.\\nSecond line.'  \n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "48fd14fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C:\\some\\name\n"
     ]
    }
   ],
   "source": [
    "print('C:\\some\\\\name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "43df6f60",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C:\\some\\name\n"
     ]
    }
   ],
   "source": [
    "print(r'C:\\some\\name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "cd1b2cf3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Usage: thingy [OPTIONS]\n",
      "     -h                        Display this usage message\n",
      "     -H hostname               Hostname to connect to\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print('''\n",
    "Usage: thingy [OPTIONS]\n",
    "     -h                        Display this usage message\n",
    "     -H hostname               Hostname to connect to\n",
    "''')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "b5c1b022",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "python\n"
     ]
    }
   ],
   "source": [
    "a = 'py'+'thon'\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "3b494ca7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "python\n"
     ]
    }
   ],
   "source": [
    "a = 'py' 'thon'\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "e098907b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Put several strings within parentheses to have them joined together.'"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = ('Put several strings within parentheses '\n",
    "        'to have them joined together.')\n",
    "text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "821c38a9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Python'"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prefix = 'Py'\n",
    "prefix+'thon'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "7123d70e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'unununium'"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "('un' * 3)+'ium'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41a02311",
   "metadata": {},
   "source": [
    "### 딕셔너리 출력"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "b3db1265",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a b c d "
     ]
    }
   ],
   "source": [
    "x = {'a': 10, 'b':20, 'c':30, 'd':40}\n",
    "for i in x:\n",
    "    print(i, end=' ')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "dfb6963d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a 10\n",
      "b 20\n",
      "c 30\n",
      "d 40\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 10, 'b':20, 'c':30, 'd':40}\n",
    "for key, value in x.items():\n",
    "    print(key, value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "fedf1557",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a\n",
      "b\n",
      "c\n",
      "d\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 10, 'b':20, 'c':30, 'd':40}\n",
    "for key in x.keys():\n",
    "    print(key)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "9cf9c441",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10\n",
      "20\n",
      "30\n",
      "40\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 10, 'b':20, 'c':30, 'd':40}\n",
    "for key in x.values():\n",
    "    print(key)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "a9c3b1e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 5\n",
      "2 6\n",
      "3 7\n",
      "4 8\n"
     ]
    }
   ],
   "source": [
    "a = [1,2,3,4]\n",
    "b = [5,6,7,8]\n",
    "for i,j in zip(a,b):\n",
    "    print(i,j)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "afe7363d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 1\n",
      "1 2\n",
      "2 3\n",
      "3 4\n"
     ]
    }
   ],
   "source": [
    "a = [1,2,3,4]\n",
    "for i,data in enumerate(a):\n",
    "    print(i,data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "37ce7a56",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 10, 'b': 20, 'c': 30, 'd': 40}"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keys = ['a', 'b', 'c', 'd']\n",
    "values = [10, 20, 30 ,40]\n",
    "x = {key: value for key, value in zip(keys,values)}\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "85c49ef1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 10, 'b': 20, 'c': 30, 'd': 40}"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keys = ['a', 'b', 'c', 'd']\n",
    "values = [10, 20, 30 ,40]\n",
    "x = {}\n",
    "for key, value in zip(keys,values):\n",
    "    x[key] = value\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "903d51e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{10: 'a', 20: 'b', 30: 'c', 40: 'd'}"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = {value: key for key, value in x.items()}\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "b8206ef7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['b', 'c', 'd', 'd', 'a']"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encode = [20, 30, 40, 40, 10]\n",
    "z = [y[i] for i in encode]\n",
    "z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "472c564c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 10, 'c': 30, 'd': 40}"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}\n",
    "x = {key: value for key, value in x.items() if value !=20 }\n",
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "868624b6",
   "metadata": {},
   "source": [
    "### 중첩된 딕셔너리"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "551d10e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "planet = {\n",
    "    'Earth' : {\n",
    "        'mean_radius' : 6371.0,\n",
    "        'orbital_perioid' : 365.2422\n",
    "    },\n",
    "    'Mars' : {\n",
    "        'mean_radius' : 3389.5,\n",
    "        'orbital_perioid' : 686.9600\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "039ea151",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'Earth': {'mean_radius': 6371.0, 'orbital_perioid': 365.2422}, 'Mars': {'mean_radius': 3389.5, 'orbital_perioid': 686.96}}\n"
     ]
    }
   ],
   "source": [
    "print(planet)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "id": "0732a808",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'mean_radius': 6371.0, 'orbital_perioid': 365.2422}\n"
     ]
    }
   ],
   "source": [
    "print(planet['Earth'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "ac80d6ae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6371.0\n"
     ]
    }
   ],
   "source": [
    "print(planet['Earth']['mean_radius'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "44e7099b",
   "metadata": {},
   "outputs": [],
   "source": [
    "planet['Earth']['orbital_perioid'] = 365.25641"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "aafc30c7",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'mean_radius': 3389.5, 'orbital_perioid': 686.96}\n"
     ]
    }
   ],
   "source": [
    "print(planet['Mars'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "id": "bb2db575",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0x168fc656980\n",
      "0x168fc656980\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 0, 'b': 0, 'c': 0, 'd': 0}\n",
    "y = x\n",
    "x is y\n",
    "print(hex(id(x)))\n",
    "print(hex(id(y)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "id": "7395104a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0x168fc63c700\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x168fc63c700\n",
      "0x7ffeea213370\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 0, 'b': 0, 'c': 0, 'd': 0}\n",
    "print(hex(id(x)))\n",
    "print(hex(id(x['a'])))\n",
    "print(hex(id(x['b'])))\n",
    "print(hex(id(x['c'])))\n",
    "print(hex(id(x['d'])))\n",
    "y = x\n",
    "y['a'] = 99\n",
    "print(hex(id(x)))\n",
    "print(hex(id(x['a'])))\n",
    "print(hex(id(x['b'])))\n",
    "print(hex(id(x['c'])))\n",
    "print(hex(id(x['d'])))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "id": "43a56d57",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "99\n",
      "99\n"
     ]
    }
   ],
   "source": [
    "print(x['a'])\n",
    "print(y['a'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "id": "022146a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0x168fc664f00\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x168fc1a1900\n",
      "0x7ffeea213370\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0x7ffeea212710\n",
      "0\n",
      "99\n"
     ]
    }
   ],
   "source": [
    "x = {'a': 0, 'b': 0, 'c': 0, 'd': 0}\n",
    "print(hex(id(x)))\n",
    "print(hex(id(x['a'])))\n",
    "print(hex(id(x['b'])))\n",
    "print(hex(id(x['c'])))\n",
    "print(hex(id(x['d'])))\n",
    "y = x.copy()\n",
    "y['a'] = 99\n",
    "print(hex(id(y)))\n",
    "print(hex(id(y['a'])))\n",
    "print(hex(id(y['b'])))\n",
    "print(hex(id(y['c'])))\n",
    "print(hex(id(y['d'])))\n",
    "print(x['a'])\n",
    "print(y['a'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "782d631f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'a': {'python': '2.7.15'}, 'b': {'python': '3.8'}}\n",
      "{'a': {'python': '2.7.15'}, 'b': {'python': '3.8'}}\n"
     ]
    }
   ],
   "source": [
    "x = {'a': {'python' : '2.7'}, 'b': {'python' : '3.8'}}\n",
    "y = x.copy()\n",
    "y['a']['python'] = '2.7.15'\n",
    "print(x)\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "bc6b837d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'a': {'python': '2.7'}, 'b': {'python': '3.8'}}\n",
      "{'a': {'python': '2.7.15'}, 'b': {'python': '3.8'}}\n"
     ]
    }
   ],
   "source": [
    "import copy\n",
    "x = {'a': {'python' : '2.7'}, 'b': {'python' : '3.8'}}\n",
    "y = copy.deepcopy(x)\n",
    "y['a']['python'] = '2.7.15'\n",
    "print(x)\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48746634",
   "metadata": {},
   "source": [
    "### 집합 자료형"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "e093e1d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3}\n"
     ]
    }
   ],
   "source": [
    "s =set([1,2,3,1,2,3])\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "id": "e65624e3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3}\n"
     ]
    }
   ],
   "source": [
    "s.add(1)\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "id": "47a4b772",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{2, 3}\n"
     ]
    }
   ],
   "source": [
    "s.remove(1)   # 전달받은 값을 삭제 (없을 때 에러 메시지를 출력)\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "id": "d0fa6e11",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3, 4, 5, 6, 7}\n"
     ]
    }
   ],
   "source": [
    "s.update([1,4,5,6,7])\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "id": "7c443d17",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 4, 5, 6, 7}\n"
     ]
    }
   ],
   "source": [
    "s.discard(3)  # 전달받은 값을 삭제 (없을 때 그냥 무시)\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "id": "5592cd9b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set()\n"
     ]
    }
   ],
   "source": [
    "s.clear()\n",
    "print(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "058b2700",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 3, 4, 5, 6, 7}\n",
      "{1, 2, 3, 4, 5, 6, 7}\n"
     ]
    }
   ],
   "source": [
    "s1 =set([1,2,3,4,5])\n",
    "s2 =set([3,4,5,6,7])\n",
    "print(s1.union(s2)) # 합집합\n",
    "print(s1 | s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "id": "e96614be",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{3, 4, 5}\n",
      "{3, 4, 5}\n"
     ]
    }
   ],
   "source": [
    "print(s1.intersection(s2))\n",
    "print(s1 & s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "id": "51307638",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2}\n",
      "{1, 2}\n"
     ]
    }
   ],
   "source": [
    "print(s1.difference(s2))\n",
    "print(s1 - s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "id": "91d9cbd7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{6, 7}\n",
      "{6, 7}\n"
     ]
    }
   ],
   "source": [
    "print(s2.difference(s1))\n",
    "print(s2 - s1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "id": "088eac75",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 2, 6, 7}\n",
      "{1, 2, 6, 7}\n"
     ]
    }
   ],
   "source": [
    "print(s1.symmetric_difference(s2))\n",
    "print(s1 ^ s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "id": "523dac08",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'dict'>\n"
     ]
    }
   ],
   "source": [
    "a = {}\n",
    "print(type(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "id": "db7babdf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'set'>\n",
      "{'e', 'a', 'p', 'l'}\n"
     ]
    }
   ],
   "source": [
    "a = {i for i in 'apple'}\n",
    "print(type(a))\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "id": "394fd2bd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'set'>\n"
     ]
    }
   ],
   "source": [
    "a = set()\n",
    "print(type(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "id": "edfeae4f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'e', 'i', 'n'}"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = {i for i in 'pineapple' if i not in 'apl'}\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "id": "52519b7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'and', 'goodbye', 'hello', 'i', 'say', 'you'}"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corpus = \"you say goodbye and i say hello .\" \n",
    "words = corpus.split()\n",
    "vocab = {x for x in words if x not in '.'}\n",
    "vocab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "id": "196f2824",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3 4 5 6 "
     ]
    }
   ],
   "source": [
    "a = {4,3,5,2,6,1}\n",
    "for i in a:\n",
    "    print(i, end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a6274188",
   "metadata": {},
   "source": [
    "### 연습문제 1번"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "id": "ccf1d358",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['ALPHA', 'BRAVO', 'Charlie', 'DELTA', 'echo', 'foxtrot']\n"
     ]
    }
   ],
   "source": [
    "a = ['alpha', 'bravo', 'Charlie', 'delta', 'echo', 'foxtrot']\n",
    "for i, data in enumerate(a):\n",
    "    if len(data) == 5:\n",
    "        a[i] = a[i].upper()\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "id": "18af93dc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['ALPHA', 'BRAVO', 'Charlie', 'DELTA', 'echo', 'foxtrot']\n"
     ]
    }
   ],
   "source": [
    "a = ['alpha', 'bravo', 'Charlie', 'delta', 'echo', 'foxtrot']\n",
    "b = [ i.upper() if len(i)==5 else i  for i in a ]\n",
    "print(b)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}