{ "metadata": { "name": "", "signature": "sha256:1f6065242a1ea235eb4712b9ec147fb29625df8861301b52ad6c880a94467811" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Chapter 21: Introducing the Standard Template Library

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.1, Page Number:507

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "v=[] #Create a zero length vector\n", " \n", "print \"Size =\",len(v)\n", " \n", "\n", "for i in range(10):\n", " v.append(i)\n", " \n", "#display current size of v\n", "print \"Current contents: \"\n", "print \"Size now =\",len(v)\n", "\n", "#display contents of vector\n", "for i in range(len(v)):\n", " print v[i],\n", " \n", "print\n", " \n", "#put more values onto end of vector\n", "#again, vector will grow as needed.\n", "for i in range(10):\n", " v.append(i+10)\n", "#display current size of v\n", "print \"Size now =\",len(v)\n", "\n", "#display contents of vector\n", "print \"Current contents:\"\n", "for i in range(len(v)):\n", " print v[i],\n", "print\n", " \n", "#change contents of vector\n", "for i in range(len(v)):\n", " v[i]=v[i]+v[i]\n", " \n", "#display contents of vector\n", "print \"Contents doubled:\"\n", "for i in range(len(v)):\n", " print v[i]," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Size = 0\n", "Current contents: \n", "Size now = 10\n", "0 1 2 3 4 5 6 7 8 9\n", "Size now = 20\n", "Current contents:\n", "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19\n", "Contents doubled:\n", "0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.2, Page Number:508

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "#Variable declaration\n", "v=[] #Create a zero length vector\n", "\n", "#put values onto end of vector\n", "for i in range(10):\n", " v.append(chr(ord('A')+i))\n", " \n", "#can access vector contents using subscripts\n", "for i in range(len(v)):\n", " print v[i], \n", "print\n", " \n", "#access via iterator\n", "for p in v:\n", " print p,\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "A B C D E F G H I J\n", "A B C D E F G H I J\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.3, Page Number:509

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "#Variable declaration\n", "v=[] #Create a zero length vector\n", "\n", "#put values onto end of vector\n", "for i in range(10):\n", " v.append(chr(ord('A')+i))\n", " \n", "#Display original contents of vector\n", "print \"Size =\",len(v)\n", "print \"Original contents:\"\n", "for i in range(len(v)):\n", " print v[i], \n", "print \"\\n\"\n", " \n", "p=2 #point to 3rd element\n", "for i in range(10):\n", " v.insert(p+i,'X')\n", " \n", "#display contents after insertion\n", "print \"Size after insert =\",len(v)\n", "print \"Contents after insert:\"\n", "for i in range(len(v)):\n", " print v[i],\n", "print \"\\n\"\n", "\n", "#remove those elements\n", "p=2 #point to 3rd element\n", "for i in range(10):\n", " v.pop(p)\n", " \n", "#display contents after insertion\n", "print \"Size after erase =\",len(v)\n", "print \"Contents after insert:\"\n", "for i in range(len(v)):\n", " print v[i],\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Size = 10\n", "Original contents:\n", "A B C D E F G H I J \n", "\n", "Size after insert = 20\n", "Contents after insert:\n", "A B X X X X X X X X X X C D E F G H I J \n", "\n", "Size after erase = 10\n", "Contents after insert:\n", "A B C D E F G H I J\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.4, Page Number:511

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class three_d:\n", " def __init__(self,a,b,c): #3D coordinates\n", " self.x=a\n", " self.y=b\n", " self.z=c\n", " #Display x,y,z coordinates - three_d inserter.\n", " def __repr__(self):\n", " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)+\"\\n\"\n", " def __add__(self,a):\n", " self.x+=a\n", " self.y+=a\n", " self.z+=a\n", " return self\n", " def __lt__(self,b):\n", " return (self.x+self.y+self.z)<(b.x+b.y+b.z)\n", " def __eq__(self,b):\n", " return (self.x+self.y+self.z)==(b.x+b.y+b.z) \n", " \n", "#Variable declaration\n", "v=[]\n", "\n", "#add objects to the vector\n", "for i in range(10):\n", " v.append(three_d(i,i+2,i-3))\n", " \n", "#Display contents of vector\n", "for i in range(len(v)):\n", " print v[i], \n", "print\n", "\n", "\n", "#Modify objects in a vector\n", "for i in range(len(v)):\n", " v[i]=v[i]+10 \n", "\n", "#Display modified vector\n", "for i in range(len(v)):\n", " print v[i], \n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0, 2, -3\n", " 1, 3, -2\n", " 2, 4, -1\n", " 3, 5, 0\n", " 4, 6, 1\n", " 5, 7, 2\n", " 6, 8, 3\n", " 7, 9, 4\n", " 8, 10, 5\n", " 9, 11, 6\n", "\n", "10, 12, 7\n", " 11, 13, 8\n", " 12, 14, 9\n", " 13, 15, 10\n", " 14, 16, 11\n", " 15, 17, 12\n", " 16, 18, 13\n", " 17, 19, 14\n", " 18, 20, 15\n", " 19, 21, 16\n", "\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.5, Page Number:513

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "v=[]\n", "v2=[]\n", "\n", "for i in range(10):\n", " v.append(chr(ord('A')+i))\n", " \n", "#Display original contents of vector\n", "print \"Size =\",len(v)\n", "print \"Original contents:\"\n", "for i in range(len(v)):\n", " print v[i], \n", "print \"\\n\"\n", "\n", "#initialze second vector\n", "str=\"-STL Power-\"\n", "for i in range(len(str)):\n", " v2.append(str[i])\n", " \n", "#get iterators to the middle of v and to the start and end of v2.\n", "p=5\n", "p2start=0\n", "p2end=len(v2)-1\n", "\n", "#insert v2 into v\n", "for i in range(p2end):\n", " v.insert(p+i,v2[p2start+i])\n", " \n", "#display result\n", "print \"Contents of v after inserton:\"\n", "for i in range(len(v)):\n", " print v[i],\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Size = 10\n", "Original contents:\n", "A B C D E F G H I J \n", "\n", "Contents of v after inserton:\n", "A B C D E - S T L P o w e r F G H I J\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.6, Page Number:517

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "#Variable declaration\n", "lst=[] #create an empty list\n", "\n", "for i in range(10):\n", " lst.append(chr(ord('A')+i))\n", " \n", "print \"Size =\",len(lst)\n", "\n", "print \"Contents:\",\n", "for p in lst:\n", " print p, \n", "print \"\\n\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Size = 10\n", "Contents: A B C D E F G H I J \n", "\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.7, Page Number:518

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "#Variable declaration\n", "lst=[] \n", "revlst=[]\n", "\n", "for i in range(10):\n", " lst.append(chr(ord('A')+i))\n", " \n", "print \"Size of list =\",len(lst)\n", "\n", "print \"Original Contents:\",\n", "#Remove elements from lst and put them into revlst in reverse order.\n", "for p in lst:\n", " print p, \n", " revlst.insert(0,p) \n", "for i in range(10):\n", " lst.pop(0)\n", "print \"\\n\"\n", "\n", "print \"Size of revlst =\",len(revlst)\n", "\n", "print \"Reversed Contents:\",\n", "for p in revlst:\n", " print p," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Size of list = 10\n", "Original Contents: A B C D E F G H I J \n", "\n", "Size of revlst = 10\n", "Reversed Contents: J I H G F E D C B A\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.8, Page Number:519

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "import random\n", "\n", "#Variable declaration\n", "lst=[] \n", "\n", "#create a list of random integers\n", "for i in range(10):\n", " lst.append(random.randint(0,100))\n", "\n", "print \"Original Contents:\",\n", "for p in lst:\n", " print p, \n", "print \"\\n\"\n", "\n", "#sort the list\n", "lst.sort()\n", "\n", "print \"Sorted Contents:\",\n", "for p in lst:\n", " print p," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Original Contents: 75 73 72 4 88 7 85 21 67 42 \n", "\n", "Sorted Contents: 4 7 21 42 67 72 73 75 85 88\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.9, Page Number:520

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "#Variable declaration\n", "lst1=[] \n", "lst2=[]\n", "\n", "for i in xrange(0,10,2):\n", " lst1.append(chr(ord('A')+i))\n", "for i in xrange(1,11,2):\n", " lst2.append(chr(ord('A')+i))\n", "\n", "print \"Contents of lst1:\",\n", "for p in lst1:\n", " print p, \n", "print \"\\n\"\n", "\n", "print \"Contents of lst2:\",\n", "for p in lst2:\n", " print p, \n", "print \"\\n\"\n", "\n", "#merge the lists\n", "lst1=lst1+lst2\n", "lst1.sort()\n", "lst2=[]\n", "\n", "if lst2==[]:\n", " print \"lst2 is now empty\"\n", "\n", "print \"Contentsof lst1 after merge:\"\n", "for p in lst1:\n", " print p," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Contents of lst1: A C E G I \n", "\n", "Contents of lst2: B D F H J \n", "\n", "lst2 is now empty\n", "Contentsof lst1 after merge:\n", "A B C D E F G H I J\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.10, Page Number:521

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class myclass:\n", " def __init__(self,i=0,j=0):\n", " self.__a=i\n", " self.__b=j\n", " self.sum=self.__a+self.__b\n", " def getsum(self):\n", " return self.sum\n", " def __lt__(self,o2):\n", " return self.sumo2.sum\n", " def __eq__(self,o2):\n", " return self.sum==o2.sum\n", " def __ne__(self, other):\n", " return not self.__eq__(self)\n", " \n", "#create first list\n", "lst1=[]\n", "for i in range(10):\n", " lst1.append(myclass(i,i))\n", " \n", "print \"First list:\",\n", "for p in lst1:\n", " print p.getsum(),\n", "print\n", "\n", "#create second list\n", "lst2=[]\n", "for i in range(10):\n", " lst2.append(myclass(i*2,i*3))\n", " \n", "print \"First list:\",\n", "for p in lst2:\n", " print p.getsum(),\n", "print\n", " \n", "#Now merge list\n", "lst1=lst1+lst2\n", "lst1.sort()\n", "\n", "#Display merge list\n", "print \"Merged list:\",\n", "for p in lst1:\n", " print p.getsum(),\n", "print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "First list: 0 2 4 6 8 10 12 14 16 18\n", "First list: 0 5 10 15 20 25 30 35 40 45\n", "Merged list: 0 0 2 4 5 6 8 10 10 12 14 15 16 18 20 25 30 35 40 45\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.11, Page Number:527

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "#Variable declaration\n", "m=[] \n", "\n", "#define the function find\n", "def find(x,ch):\n", " for p in x:\n", " if p[0]==ch:\n", " return p\n", " return -1\n", "\n", "#put pairs into map\n", "for i in range(10):\n", " m.append([chr(ord('A')+i),i])\n", " \n", "#User Input\n", "ch='D'\n", "\n", "#find value of the given key\n", "p=find(m,ch)\n", "\n", "if not(p==-1):\n", " print p[1]\n", "else:\n", " print \"Key not in the map\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "3\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.12, Page Number:528

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def find(x,ch):\n", " for p in x:\n", " if p[0].get()==ch.get():\n", " return p\n", " return -1\n", "\n", "\n", "class word:\n", " def __init__(self,s=\"\"):\n", " self.str=s\n", " def get(self):\n", " return self.str\n", " #must define less than relative to word objects\n", " def __lt__(self,b):\n", " return self.strExample 21.13, Page Number:532

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def isvowel(ch):\n", " ch=ch.lower()\n", " if (ch=='a' or ch=='e'or ch=='i' or ch=='o' or ch=='u'):\n", " return 1\n", " else:\n", " return 0\n", "\n", "str=\"STL programming is powerful.\"\n", "v=[]\n", "\n", "for i in range(len(str)):\n", " v.append(str[i])\n", " \n", "print \"Sequence:\",\n", "for i in range(len(v)):\n", " print v[i],\n", "print\n", "\n", "n=str.count('p')\n", "print n,\"characters are p\"\n", "\n", "#count if vowel\n", "n=0\n", "for i in v:\n", " if isvowel(i):\n", " n+=1\n", " \n", "print n,\"characters are vowels.\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Sequence: S T L p r o g r a m m i n g i s p o w e r f u l .\n", "2 characters are p\n", "7 characters are vowels.\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.14, Page Number:534

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "str=\"This is a test\"\n", "v=[]\n", "v2=[]\n", "\n", "for i in range(len(str)):\n", " v.append(str[i])\n", " \n", "# ***implement remove_copy***\n", "print \"Input sequence:\",\n", "for i in range(len(v)):\n", " print v[i],\n", "print \n", "\n", "#Remove all i's\n", "v2 = str.replace(\"i\", \"\")\n", "\n", "print \"Result after removing i's: \",\n", "print v2,\"\\n\"\n", "\n", "\n", "# ***implement replace_copy***\n", "print \"Input sequence:\",\n", "for i in range(len(v)):\n", " print v[i],\n", "print \n", "\n", "#Replace s's with X's\n", "v2 = str.replace(\"s\", \"X\")\n", "\n", "print \"Result after replacning s's with X's: \",\n", "print v2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Input sequence: T h i s i s a t e s t\n", "Result after removing i's: Ths s a test \n", "\n", "Input sequence: T h i s i s a t e s t\n", "Result after replacning s's with X's: ThiX iX a teXt\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.15, Page Number:535

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "v=[]\n", "\n", "for i in range(10):\n", " v.append(i)\n", " \n", "print \"Initial:\",\n", "for i in range(len(v)):\n", " print v[i],\n", "print\n", "\n", "#Reversing the list\n", "v.reverse()\n", "\n", "print \"Reversed:\",\n", "for i in range(len(v)):\n", " print v[i],\n", "print \n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Initial: 0 1 2 3 4 5 6 7 8 9\n", "Reversed: 9 8 7 6 5 4 3 2 1 0\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.16, Page Number:536

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def xform(i):\n", " return i*i #square original value\n", "\n", "#the transorm function\n", "def transform(x,f):\n", " for i in range(len(x)):\n", " x[i]= f(x[i])\n", " \n", "#Variable declaration\n", "x1=[]\n", "\n", "#put values into list\n", "for i in range(10):\n", " x1.append(i)\n", "\n", "print \"Original contents of x1: \",\n", "for p in x1:\n", " print p,\n", "print \n", "\n", "#transform x1\n", "p=transform(x1,xform)\n", "\n", "print \"Transformed contents of x1:\",\n", "for p in x1:\n", " print p," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Original contents of x1: 0 1 2 3 4 5 6 7 8 9\n", "Transformed contents of x1: 0 1 4 9 16 25 36 49 64 81\n" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.17, Page Number:540

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "str1=\"The string class gives \"\n", "str2=\"C++ high strng handlng.\"\n", "\n", "#assign a string\n", "str3=str1\n", "print str1,\"\\n\",str3\n", "\n", "#Concatenate two strings\n", "str3=str1+str2\n", "print str3\n", "\n", "#Compare strings\n", "if str3>str1:\n", " print \"str3 > str1\"\n", "if str3==str1+str2:\n", " print \"str3 == str1+str2\"\n", " \n", "str1=\"This is a null-terminated string.\"\n", "print str1\n", "\n", "#create a string object using another string object\n", "str4=str1\n", "print str4\n", "\n", "#nput a string\n", "print \"Enter a string:\"\n", "str4=\"Hello\"\n", "print str4" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The string class gives \n", "The string class gives \n", "The string class gives C++ high strng handlng.\n", "str3 > str1\n", "str3 == str1+str2\n", "This is a null-terminated string.\n", "This is a null-terminated string.\n", "Enter a string:\n", "Hello\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.18, Page Number:542

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "str1=\"This is a test\"\n", "str2=\"ABCDEFG\"\n", "\n", "print \"Initial strings:\"\n", "print \"str1:\",str1\n", "print \"str2:\",str2\n", "print\n", "\n", "#demonstrate insert\n", "print \"Insert str2 into str1:\"\n", "str1=str1[:5]+str2+str1[5:]\n", "print str1,\"\\n\"\n", "\n", "#demonstrate erase\n", "print \"Remove 7 charecters from str1:\"\n", "str1=str[:5]+str[5:]\n", "print str1,\"\\n\"\n", "\n", "#demonstrate replace\n", "print \"Replace 2 characters in str1 with str2:\"\n", "str1=str1[:5]+str2+str1[7:]\n", "print str1\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Initial strings:\n", "str1: This is a test\n", "str2: ABCDEFG\n", "\n", "Insert str2 into str1:\n", "This ABCDEFGis a test \n", "\n", "Remove 7 charecters from str1:\n", "This is a test \n", "\n", "Replace 2 characters in str1 with str2:\n", "This ABCDEFG a test\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.19, Page Number:543

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "import string\n", "\n", "#Variable declaration \n", "s1=\"The string class makes string handling easy.\"\n", "\n", "i=string.find(s1,\"class\")\n", "if not(i==-1):\n", " print \"Match found at\",i\n", " print \"Remaining string is:\",\n", " s2=s1[i:]\n", " print s2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Match found at 11\n", "Remaining string is: class makes string handling easy.\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 21.20, Page Number:545

" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def find(x,ch):\n", " for p in x:\n", " if p[0]==ch:\n", " return p\n", " return -1\n", "\n", "\n", "dictionary=[]\n", "\n", "dictionary.append([\"house\",\"A place of dwelling\"])\n", "dictionary.append([\"keyboard\",\"An input device\"])\n", "dictionary.append([\"programming\",\"The act of writing a program\"])\n", "dictionary.append([\"STL\",\"Standard Template Library\"])\n", "\n", "#given a word, find meaning\n", "print \"Enter word:\"\n", "str=\"house\" #User input\n", "\n", "p=find(dictionary,str)\n", "\n", "if not(p==-1):\n", " print \"Definition:\",p[1]\n", "else:\n", " print \"Word not in the dictionary.\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Enter word:\n", "Definition: A place of dwelling\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }