{ "cells": [ { "cell_type": "markdown", "id": "d6cabf5f-8469-4a8b-bfbc-d3a2bcf39c7e", "metadata": { "collapsed": false }, "source": [ "
\n", "

Algorytmy i programowanie

\n", "

Krotki, zbiory i słowniki w Pythonie

\n", "

\n", "
" ] }, { "cell_type": "markdown", "id": "803b4bbb-d608-49dd-87be-96045723f0bd", "metadata": { "collapsed": false }, "source": [ "### Krotki\n", "\n", "Krotka (*ang. tuple*), podobnie jak lista, jest uporządkowaną sekwencją wartości dowolnego typu, które są indeksowane liczbami całkowitymi począwszy od 0. Jednak w odróżnieniu od listy raz zadeklarowana krotka jest niemodyfikowalna tzn. nie można zmieniać wartości jej elementów, ani dodawać lub usuwać jej elementów. Krotkę definiuje się za pomocą wymienienia jej elementów oddzielonych przecinkami i umieszczonych w zwykłych nawiasach (nawiasy okrągłe są pomijalne)." ] }, { "cell_type": "code", "execution_count": 3, "id": "24596060-da1f-4faa-ab33-07dea70727ec", "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('kuchnia', 'łazienka', 'sypialnia', 'sypialnia', 'jadalnia', 'salon')\n" ] } ], "source": [ "dom = (\"kuchnia\", \"łazienka\", \"sypialnia\", \"sypialnia\", \"jadalnia\", \"salon\") # nawiasy nie są konieczne\n", "print(dom)" ] }, { "cell_type": "markdown", "id": "9f221245-f28c-43dc-a981-25cae463a58e", "metadata": { "collapsed": false }, "source": [ "Większość operacji jakie można wykonać na listach można również wykonywać na krotkach. Oczywiście z wyjątkiem tych, które próbują modyfikować elementy krotki." ] }, { "cell_type": "code", "execution_count": 4, "id": "a2685706-712d-41f4-87bd-b3d6eb719359", "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 2, 3, 5, 6)\n", "(0, 1, 0, 1, 0, 1)\n", "('sypialnia', 'sypialnia')\n" ] } ], "source": [ "print((1, 2, 3) + (5, 6)) # dodawanie krotek\n", "print((0, 1) * 3) # mnożenie krotki przez liczbę odpowiada powielaniu krotki\n", "print(dom[2:-2]) # wycinanie" ] }, { "cell_type": "markdown", "id": "3b21e7da-5ed6-4de3-b669-060cb3881ec2", "metadata": { "collapsed": false }, "source": [ "Jak już zostało wspomniane, krotek nie można modyfikować. Jeśli jednak z jakiegoś powodu chcemy ją zmodyfikować to możemy utworzyć nową krotkę, która zastąpi tę starą lub możemy też przekonwertować krotkę na listę, którą można już modyfikować, a następnie przekonwertować ją z powrotem na krotkę (w tym celu należy użyć kolejno funkcji `list()` oraz `tuple()`)." ] }, { "cell_type": "code", "execution_count": 5, "id": "748cb5cf-ed6a-44b6-86bb-b8a9762a3acb", "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "salon\n" ] }, { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[5], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m dom \u001b[38;5;241m=\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mkuchnia\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124młazienka\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msypialnia\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msypialnia\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mjadalnia\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msalon\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(dom[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m])\n\u001b[0;32m----> 3\u001b[0m \u001b[43mdom\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mkuchnia mała\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "source": [ "dom = (\"kuchnia\", \"łazienka\", \"sypialnia\", \"sypialnia\", \"jadalnia\", \"salon\")\n", "print(dom[-1])\n", "dom[0] = \"kuchnia mała\"" ] }, { "cell_type": "code", "execution_count": 6, "id": "fd77fe07-b083-4a07-9997-27c14f76b648", "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class tuple in module builtins:\n", "\n", "class tuple(object)\n", " | tuple(iterable=(), /)\n", " | \n", " | Built-in immutable sequence.\n", " | \n", " | If no argument is given, the constructor returns an empty tuple.\n", " | If iterable is specified the tuple is initialized from iterable's items.\n", " | \n", " | If the argument is a tuple, the return value is the same object.\n", " | \n", " | Built-in subclasses:\n", " | asyncgen_hooks\n", " | UnraisableHookArgs\n", " | \n", " | Methods defined here:\n", " | \n", " | __add__(self, value, /)\n", " | Return self+value.\n", " | \n", " | __contains__(self, key, /)\n", " | Return key in self.\n", " | \n", " | __eq__(self, value, /)\n", " | Return self==value.\n", " | \n", " | __ge__(self, value, /)\n", " | Return self>=value.\n", " | \n", " | __getattribute__(self, name, /)\n", " | Return getattr(self, name).\n", " | \n", " | __getitem__(self, key, /)\n", " | Return self[key].\n", " | \n", " | __getnewargs__(self, /)\n", " | \n", " | __gt__(self, value, /)\n", " | Return self>value.\n", " | \n", " | __hash__(self, /)\n", " | Return hash(self).\n", " | \n", " | __iter__(self, /)\n", " | Implement iter(self).\n", " | \n", " | __le__(self, value, /)\n", " | Return self<=value.\n", " | \n", " | __len__(self, /)\n", " | Return len(self).\n", " | \n", " | __lt__(self, value, /)\n", " | Return self