You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

033 Tupel.ipynb 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {
  6. "slideshow": {
  7. "slide_type": "slide"
  8. }
  9. },
  10. "source": [
  11. "# Software Entwicklung \n",
  12. "\n",
  13. "## Kapitel 3: Listen und Tupel"
  14. ]
  15. },
  16. {
  17. "cell_type": "markdown",
  18. "metadata": {
  19. "slideshow": {
  20. "slide_type": "slide"
  21. }
  22. },
  23. "source": [
  24. "### 3.6 Tupel\n",
  25. "\n",
  26. "*Tupel* sind wie Listen ein Datentyp, mit dem *mehrere Werte* verwaltet werden können. Aber anders als Listen\n",
  27. "kann ein einmal erzeugtes Tupel nicht verändert werden, d.h.\n",
  28. "\n",
  29. "* es können keine weiteren Werte hinzugefügt werden\n",
  30. "* es können keine Werte aus dem Tupel entfernt werden\n",
  31. "* es kann kein Wert innerhalb des Tupels verändert werden\n",
  32. "\n",
  33. "Aufgrund dieser Einschränkungen werden Tupel i.d.R. schneller verarbeitet als Listen.\n",
  34. "\n",
  35. "Tupel werden durch runde Klammern begrenzt."
  36. ]
  37. },
  38. {
  39. "cell_type": "code",
  40. "execution_count": null,
  41. "metadata": {
  42. "pycharm": {
  43. "is_executing": false,
  44. "name": "#%%\n"
  45. }
  46. },
  47. "outputs": [],
  48. "source": [
  49. "tupel = (3, 7, 4, 9)\n",
  50. "print(len(tupel))"
  51. ]
  52. },
  53. {
  54. "cell_type": "markdown",
  55. "metadata": {
  56. "slideshow": {
  57. "slide_type": "slide"
  58. }
  59. },
  60. "source": [
  61. "Lesender Zugriff ist wiederum mit einem Index möglich."
  62. ]
  63. },
  64. {
  65. "cell_type": "code",
  66. "execution_count": null,
  67. "metadata": {
  68. "pycharm": {
  69. "is_executing": false,
  70. "name": "#%%\n"
  71. }
  72. },
  73. "outputs": [],
  74. "source": [
  75. "tupel = (3, 7, 4, 9)\n",
  76. "print(tupel[2])"
  77. ]
  78. },
  79. {
  80. "cell_type": "markdown",
  81. "metadata": {
  82. "slideshow": {
  83. "slide_type": "slide"
  84. }
  85. },
  86. "source": [
  87. "Schreibender Zugriff wird aufgrund des Read-Only-Charakters von Tupeln verwehrt. "
  88. ]
  89. },
  90. {
  91. "cell_type": "code",
  92. "execution_count": null,
  93. "metadata": {
  94. "pycharm": {
  95. "is_executing": false,
  96. "name": "#%%\n"
  97. }
  98. },
  99. "outputs": [],
  100. "source": [
  101. "tupel = (3, 7, 4, 9)\n",
  102. "tupel[2] = 3"
  103. ]
  104. },
  105. {
  106. "cell_type": "markdown",
  107. "metadata": {
  108. "slideshow": {
  109. "slide_type": "slide"
  110. }
  111. },
  112. "source": [
  113. "Die Elemente eines Tupels können mit einem einzigen Befehl separaten Variablen zugewiesen werden. Die Anzahl der\n",
  114. "aufnehmenden Variablen muss aber exakt der Länge des Tupels entsprechen."
  115. ]
  116. },
  117. {
  118. "cell_type": "code",
  119. "execution_count": null,
  120. "metadata": {
  121. "pycharm": {
  122. "is_executing": false,
  123. "name": "#%%\n"
  124. }
  125. },
  126. "outputs": [],
  127. "source": [
  128. "tupel = (3, 7, 4, 9)\n",
  129. "e1, e2, e3, e4 = tupel\n",
  130. "print(e4)"
  131. ]
  132. },
  133. {
  134. "cell_type": "markdown",
  135. "metadata": {
  136. "slideshow": {
  137. "slide_type": "slide"
  138. }
  139. },
  140. "source": [
  141. "Wie die Liste ist auch ein Tupel eine Sequenz, die mit Hilfe der <code>for</code>-Schleife\n",
  142. "durchlaufen werden kann."
  143. ]
  144. },
  145. {
  146. "cell_type": "code",
  147. "execution_count": null,
  148. "metadata": {
  149. "pycharm": {
  150. "is_executing": false,
  151. "name": "#%%\n"
  152. }
  153. },
  154. "outputs": [],
  155. "source": [
  156. "for zahl in (3, 7, 4, 9):\n",
  157. " print(zahl)"
  158. ]
  159. },
  160. {
  161. "cell_type": "markdown",
  162. "metadata": {
  163. "pycharm": {
  164. "name": "#%% md\n"
  165. },
  166. "slideshow": {
  167. "slide_type": "slide"
  168. }
  169. },
  170. "source": [
  171. "Listen und Tupel können verschachtelt werden, d.h. eine Liste kann wiederum Listen und/oder Tupel enthalten bzw. \n",
  172. "die Elemenente eines Tupels können auch Listen oder Tupel sein."
  173. ]
  174. },
  175. {
  176. "cell_type": "code",
  177. "execution_count": null,
  178. "metadata": {
  179. "pycharm": {
  180. "is_executing": false,
  181. "name": "#%%\n"
  182. }
  183. },
  184. "outputs": [],
  185. "source": [
  186. "tupel = ((3, 7), (4, 9))\n",
  187. "print(len(tupel))\n",
  188. "print(tupel[1][0])"
  189. ]
  190. },
  191. {
  192. "cell_type": "code",
  193. "execution_count": null,
  194. "metadata": {
  195. "pycharm": {
  196. "is_executing": false,
  197. "name": "#%%\n"
  198. }
  199. },
  200. "outputs": [],
  201. "source": [
  202. "ergebnis = []\n",
  203. "for zeilennummer in range(1, 6):\n",
  204. " neue_zeile = []\n",
  205. " for index in range(zeilennummer):\n",
  206. " neue_zeile.append(zeilennummer)\n",
  207. " ergebnis.append(neue_zeile)\n",
  208. "print(ergebnis)"
  209. ]
  210. },
  211. {
  212. "cell_type": "markdown",
  213. "metadata": {
  214. "slideshow": {
  215. "slide_type": "slide"
  216. }
  217. },
  218. "source": [
  219. "Gelegentlich möchte man eine Liste \"durchnummerieren\", d.h. neben den eigentlichen Listenelementen\n",
  220. "auch den Index des Listenelements ausweisen:\n",
  221. "\n",
  222. "<code>['A', 'B', 'C']</code> -> <code>[(0, 'A'), (1, 'B'), (2, 'C')]</code>\n",
  223. "\n",
  224. "Genau dieses leistet die Built-In-Funktion <code>enumerate</code>, die aus einer Liste eine Sequenz \n",
  225. "von derartigen Tupeln generiert. Und wie bei <code>range</code> muss das Ergebnis erst noch in eine Liste\n",
  226. "umgewandelt werden, um wirklich das obige Verhalten nachzubilden."
  227. ]
  228. },
  229. {
  230. "cell_type": "code",
  231. "execution_count": null,
  232. "metadata": {
  233. "pycharm": {
  234. "is_executing": false,
  235. "name": "#%%\n"
  236. }
  237. },
  238. "outputs": [],
  239. "source": [
  240. "print(list(enumerate(['A', 'B', 'C'])))"
  241. ]
  242. },
  243. {
  244. "cell_type": "markdown",
  245. "metadata": {
  246. "slideshow": {
  247. "slide_type": "slide"
  248. }
  249. },
  250. "source": [
  251. "Ein häufiger Anwendungsfall einer <code>enumerate</code>-Sequenz ist die Verwendung in einer \n",
  252. "<code>for</code>-Schleife. Die entstehenden Tupel können unmittelbar in zwei einzelne Variablen \n",
  253. "übernommen werden."
  254. ]
  255. },
  256. {
  257. "cell_type": "code",
  258. "execution_count": null,
  259. "metadata": {
  260. "pycharm": {
  261. "is_executing": false,
  262. "name": "#%%\n"
  263. }
  264. },
  265. "outputs": [],
  266. "source": [
  267. "liste = [3, 7, 4, 9]\n",
  268. "for index, zahl in enumerate(liste):\n",
  269. " print(f\"{index+1}. Zahl ist {zahl}\")"
  270. ]
  271. }
  272. ],
  273. "metadata": {
  274. "celltoolbar": "Slideshow",
  275. "kernelspec": {
  276. "display_name": "Python 3 (ipykernel)",
  277. "language": "python",
  278. "name": "python3"
  279. },
  280. "language_info": {
  281. "codemirror_mode": {
  282. "name": "ipython",
  283. "version": 3
  284. },
  285. "file_extension": ".py",
  286. "mimetype": "text/x-python",
  287. "name": "python",
  288. "nbconvert_exporter": "python",
  289. "pygments_lexer": "ipython3",
  290. "version": "3.9.9"
  291. },
  292. "pycharm": {
  293. "stem_cell": {
  294. "cell_type": "raw",
  295. "metadata": {
  296. "collapsed": false
  297. },
  298. "source": []
  299. }
  300. }
  301. },
  302. "nbformat": 4,
  303. "nbformat_minor": 1
  304. }