Skip to content

Instantly share code, notes, and snippets.

@kantale
Created October 14, 2017 09:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kantale/cba95c58a855701c020851c0d7c2b0f1 to your computer and use it in GitHub Desktop.
Save kantale/cba95c58a855701c020851c0d7c2b0f1 to your computer and use it in GitHub Desktop.
2017, Προγραμματισμός με python, διάλεξη 1
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Προγραμματισμός με τη γλώσσα python\n",
"### [Alexandros Kanterakis](mailto:kantale@ics.forth.gr) kantale@ics.forth.gr\n",
"### Διάλεξη 1η, Παρασκευή 13 Οκτωβρίου 2017\n",
"\n",
"### Αντί εισαγωγής\n",
"Όλες οι διαλέξεις θα διατίθονται σε μορφή [jupyter notebooks](http://jupyter.org/). Το Jupyter είναι ένα περιβάλλον που σου επιτρέπει να γράφεις python και να βλέπεις άμεσα τα αποτελέσματα των εντολών στον browser του υπολογιστή σου. Μπορείτε να σώσετε την ανάλυση σε ένα αρχείο, να το στείλετε mail κτλ. \n",
"\n",
"Ένα jupyter notebook αποτελείται από κελιά. Κάθε κελί μπορεί να περιέχει είτε κώδικα python (επιτρέπονται και άλλες γλώσσες) είτε [markdown](https://en.wikipedia.org/wiki/Markdown). Το markdown είναι μια συλλογή από συμβάσεις για να εισάγουμε μορφοποίηση σε ένα αρχείο κειμένου. Π.χ. αν στο markdown γράγουμε μία λέξη ανάμεσα σε 2 αστεράκια (π.χ.: ```**Αλέξανδρος**```) τότε αυτή θα εμφανιστεί ως bold (έντονη) δηλαδή έτσι: **Αλέξανδρος**. [Πλήρη λίστα με όλες τις markdown συμβάσεις](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).\n",
"\n",
"Επίσης μπορείτε να φορτώσετε κάποιο notebook που θα σας στείλουν στον browser σας. Ακόμα καλύτερα μπορείτε να αποθηκεύσετε ένα notebook στο Internet δωρεάν! Ως [gist](https://gist.github.com/). Θα δούμε πως θα το κάνουμε αυτό στην επόμενη διάλεξη. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### print "
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"kati\n"
]
}
],
"source": [
"print ('kati')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να χρησιμοποιήσουμε μονά (') ή διπλά αυτάκια (\")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello\n"
]
}
],
"source": [
"print (\"hello\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(θα επανέλθουμε αργότερα)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Σχόλια\n",
"Σε οιποιαδίποτε γραμμή οτιδίποτε ακολουθεί τον χαρακτήρα ```#``` θεωρείται σχόλιο και αγνοείται:"
]
},
{
"cell_type": "code",
"execution_count": 255,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Αυτό δεν είναι σχόλιο\n"
]
}
],
"source": [
"# Αυτό είναι ένα σχόλιο\n",
"print ('Αυτό δεν είναι σχόλιο') # Αυτό όμως είναι!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Μαθηματικές πράξεις:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3+2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Δεκαδική διαίρεση:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.5"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3/2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ακέραια διαίρεση:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3//2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Προσοχή!**"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {},
"outputs": [
{
"ename": "ZeroDivisionError",
"evalue": "division by zero",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-189-9e1622b385b6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;36m1\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mZeroDivisionError\u001b[0m: division by zero"
]
}
],
"source": [
"1/0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Αλφαριθμητικά (ή αλλιώς: strings)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'mitsos'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"mitsos\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να προσθέσουμε δύο strings:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ab'"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'a' + 'b'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να πολλαπλασιάσουμε string με ακέραιο:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'aaaaaaaaaa'"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'a' * 10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Υπάρχει και το άδειο string"
]
},
{
"cell_type": "code",
"execution_count": 238,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"''"
]
},
"execution_count": 238,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"''"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Η ```len``` επιστρέφει το μέγεθος ενός string"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 228,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(\"abcdefg\")"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 239,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len('')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"H ```count``` μας επιστρέφει πόσες φορές υπάρχει ένα string μέσα σε ένα άλλο string."
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"zabarakatranemia\".count('a')"
]
},
{
"cell_type": "code",
"execution_count": 231,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 231,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"zabarakatranemia\".count('ra')"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 232,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"zabarakatranemia\".count('c')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"H ```index``` μας επιστρέφει σε ποιο σημείο συναντάμε ΠΡΩΤΗ φορά κάποιο string μέσα σε ένα άλλο string."
]
},
{
"cell_type": "code",
"execution_count": 234,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 234,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"zabarakatranemia\".index('anemia')"
]
},
{
"cell_type": "code",
"execution_count": 236,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 236,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"zabarakatranemia\".index('ra') # Το \"ra\" υπάρχει δύο φορές αλλά επιστρέφει τη θέση της πρώτης."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν δεν υπάρχει τότε πετάει λάθος!"
]
},
{
"cell_type": "code",
"execution_count": 237,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "substring not found",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-237-1515cc1d7dbe>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m\"zabarakatranemia\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'c'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mValueError\u001b[0m: substring not found"
]
}
],
"source": [
"\"zabarakatranemia\".index('c')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Προσοχή!** Δύο strings το ένα δίπλα στο ένα θεωρούνται ένα!"
]
},
{
"cell_type": "code",
"execution_count": 271,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Helloworld'"
]
},
"execution_count": 271,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"Hello\" \"world\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ένα string μπορεί να έχει χαρακτήρες σε οποιαδίποτε γλώσσα!"
]
},
{
"cell_type": "code",
"execution_count": 275,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"σε οποθιαδίποτε γλώσσα ذا كيور (بالإنجليزية: The Cure) هي فرقة روك إنجليزية، تم تكوينها في كرولي، غرب ساسكس عام 1976. واجهت الفرقة عِدة تغيرات؛ مع \n"
]
}
],
"source": [
"a = \"σε οποθιαδίποτε γλώσσα ذا كيور (بالإنجليزية: The Cure) هي فرقة روك إنجليزية، تم تكوينها في كرولي، غرب ساسكس عام 1976. واجهت الفرقة عِدة تغيرات؛ مع \"\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ναι, τα [emoji](https://unicode.org/emoji/charts/full-emoji-list.html) συμπεριλαμβάνονται:"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"😡\n"
]
}
],
"source": [
"print (\"\\U0001F621\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Μεταβλητές\n",
"Όταν γράφουμε ```a=3``` τότε αποθηκεύουμε στη μνήμη του υπολογιστή την τιμή 3. Μπορούμε όποτε θέλουμε μετά να αναφερθούμε σε αυτή την τιμή χρησμοποιώντας το όνομα της μεταβλητής"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"a=3"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a+a"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"a = 'mitsos'"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'mitsos'"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Οι δεκαδικές μεταβλητές έχουν συγκεκριμένη ακρίβεια:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"a=5.55545345345234578234659823468237456928374659283746592837465923874659283745692834765928374569283476529873456"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.555453453452346"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Οι ακέραιες μεταβλητές μπορούν να είναι όσο μεγάλες θέλουμε!"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"a = 2984375693847562938476529387456293874562938476529387465923847569238745692387465923874659238746592837465"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2984375693847562938476529387456293874562938476529387465923847569238745692387465923874659238746592837465"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να κάνουμε διάφορες πράξεις μεταξύ μεταβλητών:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n"
]
}
],
"source": [
"a=3\n",
"b=4\n",
"print (a+b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Τα κενα δεν έχουν σημασία (αρκεί όλες οι γραμμές να ξεκινάνε από το ίδιο κενό). \n",
"\n",
"Όλα τα παρακάτω είναι ισοδύναμα:"
]
},
{
"cell_type": "code",
"execution_count": 240,
"metadata": {},
"outputs": [],
"source": [
"a=3\n",
"a = 3\n",
"a = 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Στα παρακάτω όμως υπάρχει λάθος!"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {},
"outputs": [
{
"ename": "IndentationError",
"evalue": "unexpected indent (<ipython-input-242-fc87d32c6889>, line 2)",
"output_type": "error",
"traceback": [
"\u001b[0;36m File \u001b[0;32m\"<ipython-input-242-fc87d32c6889>\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m a=3 # Αυτό ξεκινάει με ένα κενό πιο μέσα!\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n"
]
}
],
"source": [
"a=3\n",
" a=3 # Αυτό ξεκινάει με ένα κενό πιο μέσα!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Με την print μπορούμε να τυπώνουμε τις τιμές πολλών μεταβλητών:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"a=\"the answer is\"\n",
"b=7"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"the answer is 7\n"
]
}
],
"source": [
"print (a,b)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"this answer is 7\n"
]
}
],
"source": [
"print (\"this answer is\", b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν μέσα σε ένα string βάλουμε το ```{}``` τότε μπορούμε να βάλουμε μία μεταβλητή σε αυτή τη θέση του string. Για να το κάνουμε αυτό χρησιμοποιούμε τη μέθοδο ```format```."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"answer is 7\n"
]
}
],
"source": [
"c = \"answer is {}\".format(b)\n",
"print (c)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να βάλουμε πάνω από ένα ```{}``` σε ένα string:"
]
},
{
"cell_type": "code",
"execution_count": 192,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is Bond. James Bond.\n"
]
}
],
"source": [
"a = 'James'\n",
"b = 'Bond'\n",
"print ('My name is {}. {} {}.'.format(b, a, b))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Όλα κεφαλαία:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ABCDE'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcde\".upper()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Όλα μικρά:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'abcde'"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"ABCDE\".lower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αντικατάσταση κάποιου κομματιού του string με ένα άλλο:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'heQQQQQQo worQQQd'"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello world\".replace('l', \"QQQ\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Indexing\n",
"Στα strings (όπως και στις λίστες όπως θα δούμε παρακάτω), μπορούμε να παραπάνω ένα υποσύνολό τους χρησιμοποιώντας το ```[]```. Αυτή η δυνατότητα ονομάζεται indexing. "
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello\n"
]
}
],
"source": [
"print (\"hello\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Προσοχή!** Η αρίθμηση ξεκινάει από το 0!"
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'h'"
]
},
"execution_count": 195,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[0]"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'e'"
]
},
"execution_count": 196,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Προσοχή!** H αρίθμηση δεν πρέπει να ξεπεράσει το μέγεθος του string!"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "string index out of range",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-197-e6ccf1afaf71>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m\"hello\"\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: string index out of range"
]
}
],
"source": [
"\"hello\"[100]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To index (ή αλλιώς η \"αρίθμηση\") μπορεί να πάρει πάρει και αρνητικές τιμές! το ```-1``` είναι το τελευταίο στοιχείο. Το ```-2``` το προτελευταίο κτλ.."
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'o'"
]
},
"execution_count": 199,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[-1]"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'l'"
]
},
"execution_count": 200,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[-2]"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "string index out of range",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-201-552ff00ad524>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m\"hello\"\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: string index out of range"
]
}
],
"source": [
"\"hello\"[-100]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Indexing spaces\n",
"Μπορούμε να πάρουμε κάποια ένα υποσύνολο ενώς string με βάση τα διαστήματα που ορίζουμε στο ```[]```"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'el'"
]
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[1:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Όταν γράφουμε ```[a:b]``` εννοούμε \"ξεκίνα από το α-στό στοιχείο (η αρίθμηση ξεκινάει από 0!) και σταμάτο στο β-στό στοιχείο, ΧΩΡΙΣ ΟΜΩΣ ΝΑ ΠΑΡΕΙΣ ΑΥΤΟ!!\""
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ell'"
]
},
"execution_count": 204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[1:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν θέλουμε να πάρουμε ένα υποσύνολο που ξεκινάει από την αρχή του string τότε μπορούμε να γράψου είτε ```[0:b]``` είτε ```[:b]```"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'he'"
]
},
"execution_count": 206,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[0:2]"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'he'"
]
},
"execution_count": 207,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[:2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν θέλουμε ένα υποσύνολο που τελειώνει στο τέλος του string τότε μπορούμε να γράψουμε ```[a:]```"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'llo'"
]
},
"execution_count": 208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"hello\"[2:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Indexing spaces with steps\n",
"Μπορούμε να χρησημοποιήσουμε για indexing το ```[a:b:c]```. Αυτό σημαίνει: πήγαινε από το a-στο στο b-στο (χωρίς να πάρεις το b-στο!) με βήμα: c"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'bdf'"
]
},
"execution_count": 212,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[1:7:2]"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'be'"
]
},
"execution_count": 213,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[1:7:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν παραλείψουμε το πρώτο στοιχείο τότε από default βάζει το 0"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'adg'"
]
},
"execution_count": 215,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[:7:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν παραλείψουμε το δεύτερο τότε από default βάζει το τέλος του string"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'bei'"
]
},
"execution_count": 216,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[1::3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να παραλείψουμε και τα δύο οπότε θα πάρει από την αρχή μέχρι το τέλος του string"
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'adg'"
]
},
"execution_count": 217,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[::3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν παραλείψουμε το τρίτο τότε από default βάζει το 1"
]
},
{
"cell_type": "code",
"execution_count": 218,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'bcdefg'"
]
},
"execution_count": 218,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[1:7:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To c δεν μπορεί να είναι 0!"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "slice step cannot be zero",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-219-96e6dd4da4bc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m\"abcdefgij\"\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mValueError\u001b[0m: slice step cannot be zero"
]
}
],
"source": [
"\"abcdefgij\"[1:7:0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Αρνητικά indexing steps.\n",
"Το βήμα ```c``` μπορεί να είναι αρνητικό! "
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'igfedc'"
]
},
"execution_count": 220,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[7:1:-1]"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ifd'"
]
},
"execution_count": 221,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[7:1:-2]"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ifdb'"
]
},
"execution_count": 222,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[7::-2]"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'jgeca'"
]
},
"execution_count": 223,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[::-2]"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'jigfedcba'"
]
},
"execution_count": 224,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"abcdefgij\"[::-1] # Reverse a string! "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Χρήσιμο όταν έχουμε cDNA !"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'TGCA'"
]
},
"execution_count": 225,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"ACGT\"[::-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Φυσικά μπορεί να μπει και κάποια μεταβλητή σε αυτά."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'abc'"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a=3\n",
"\"abcde\"[0:a]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Special Characters\n",
"Έχουμε πει ότι με τα μονά ή διπλά \"αυτάκια\" μπορούμε να δηλώσουμε ένα string. Τι γίνεται όμως όταν θέλουμε να βάλουμε μέσα ένα string ένα μονό ή διπλό αυτάκι; Μπορούμε να χρησιμοποιήσουμε το ```\\``` ή αλλιώς backslash:"
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"mitsos\n"
]
}
],
"source": [
"print(\"mitsos\")"
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is \"mitsos\"\n"
]
}
],
"source": [
"print(\"My name is \\\"mitsos\\\"\")"
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is \"mitsos\"\n"
]
}
],
"source": [
"print('My name is \"mitsos\"')"
]
},
{
"cell_type": "code",
"execution_count": 248,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is 'Mitsos'\n"
]
}
],
"source": [
"print ('My name is \\'Mitsos\\'')"
]
},
{
"cell_type": "code",
"execution_count": 249,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is 'Mitsos'\n"
]
}
],
"source": [
"print (\"My name is 'Mitsos'\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Υπάρχουν επίσης και οι παρακάτω ειδικοί χαρακτήρες: \n",
"* Νέα γραμμή: ```\\n``` (n = New line)\n",
"* Tab: ```\\t``` "
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Line 1\n",
"Line 2\n"
]
}
],
"source": [
"print(\"Line 1\\nLine 2\")"
]
},
{
"cell_type": "code",
"execution_count": 251,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Col 1\tCol2\n"
]
}
],
"source": [
"print (\"Col 1\\tCol2\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Σε περίπτωση που θέλουμε να γράψουμε ένα μεγάλος string που έχει μέσα πολλούς ειδικούς χαρακτήρε (αυτάκια, new lines, κτλ.. ) μπορούμε να χρησημοποιείσουμε τα τριπλά μονά ή διπλα αυτάκια:"
]
},
{
"cell_type": "code",
"execution_count": 252,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\"Be realistic - demand the impossible!\"\n",
" Soyez réalistes, demandez l'impossible! - Anonymous graffiti, Paris 1968\n",
"\n"
]
}
],
"source": [
"a = '''\n",
"\"Be realistic - demand the impossible!\"\n",
" Soyez réalistes, demandez l'impossible! - Anonymous graffiti, Paris 1968\n",
"'''\n",
"print(a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Λίστες\n",
"Οι [λίστες](https://el.wikipedia.org/wiki/%CE%9B%CE%AF%CF%83%CF%84%CE%B1_%28%CE%B1%CF%86%CE%B7%CF%81%CE%B7%CE%BC%CE%AD%CE%BD%CE%BF%CF%82_%CF%84%CF%8D%CF%80%CE%BF%CF%82_%CE%B4%CE%B5%CE%B4%CE%BF%CE%BC%CE%AD%CE%BD%CF%89%CE%BD%29) είναι ένα μία βασική έννοια της επιστήμης υπολογιστών. \n",
"\n",
"Στην ουσία είναι μια διατεταγμένη σειρά από δεδομένα. Διατεταγμένο = κάθε στοιχείο έχει τη θέση του (1η, 2η, ...)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4]\n"
]
}
],
"source": [
"a = [1,2,3,4]\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μία λίστα μπορεί να έχει στοιχεία διαφορετικού τύπου (αριθμοί, δεκαδικά, strings, ...)"
]
},
{
"cell_type": "code",
"execution_count": 254,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 'mitsos', 5, 7.77777778]\n"
]
}
],
"source": [
"a = [1,2,3,\"mitsos\", 5, 7.77777778]\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Η προσπέλαση των στοιχείων μίας λίστας γίνεται ακριβώς όπως και με τα strings:"
]
},
{
"cell_type": "code",
"execution_count": 256,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 256,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[0] # Το πρώτο στοιχείο"
]
},
{
"cell_type": "code",
"execution_count": 257,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"execution_count": 257,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[0:3] # Όλα τα στοιχεία από το πρώτο μέχρι το τέταρτο (χωρίς το τέταρτο)"
]
},
{
"cell_type": "code",
"execution_count": 258,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7.77777778"
]
},
"execution_count": 258,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[-1] # Το τελευταίο στοιχείο"
]
},
{
"cell_type": "code",
"execution_count": 259,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[5, 7.77777778]"
]
},
"execution_count": 259,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[-2:] # Το προτελευταίο στοιχείο"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ομοίως, μπορούμε να χρησιμοποιήσουμε τα διαστήματα. Έστω:"
]
},
{
"cell_type": "code",
"execution_count": 284,
"metadata": {},
"outputs": [],
"source": [
"b = [1,2,3,4,5,6]"
]
},
{
"cell_type": "code",
"execution_count": 290,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 5]"
]
},
"execution_count": 290,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[2:5:2] # Από το 3ο μέχρι το 6ο (χωρίς να πάρουμε ΚΑΙ το 6ο), με βήμα 2"
]
},
{
"cell_type": "code",
"execution_count": 291,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 3, 5]"
]
},
"execution_count": 291,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[::2] # Από την αρχή μέχρι ΚΑΙ το τέλος με βήμα 2"
]
},
{
"cell_type": "code",
"execution_count": 292,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"execution_count": 292,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[:3] # Από την αρχή μέχρι το 4ο στοιχείο (χωρίς να πάρουμε ΚΑΙ το 4ο)"
]
},
{
"cell_type": "code",
"execution_count": 294,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n",
"[1, 2, 3, 4, 5, 6]\n"
]
}
],
"source": [
"# Όλα τα παρακάτω είναι ισοδύναμα\n",
"print (b)\n",
"print (b[:])\n",
"print (b[::])\n",
"print (b[::1])\n",
"print (b[0:])\n",
"print (b[0::])\n",
"print (b[0::1])\n",
"print (b[:len(b)])\n",
"print (b[:len(b):])\n",
"print (b[0:len(b)])\n",
"print (b[0:len(b):1])"
]
},
{
"cell_type": "code",
"execution_count": 287,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[6, 5, 4, 3, 2]"
]
},
"execution_count": 287,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[-1:0:-1] # Από το τέλος μέχρι την αρχή (χωρίς να πάρουμε ΚΑΙ την αρχή)"
]
},
{
"cell_type": "code",
"execution_count": 286,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[6, 5, 4, 3, 2, 1]"
]
},
"execution_count": 286,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[-1::-1] # Από το τέλος μέχρι την αρχή (παίρνουμε και την αρχή)"
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[6, 5, 4, 3, 2, 1]"
]
},
"execution_count": 288,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[::-1] # Αυτό είναι ισοδύναμε με το παραπάνω"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Όπως και τα strings έτσι και στις λίστες μπορούμε να εφαρμόσουμε τις ```len```, ```count```, ```index```."
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {},
"outputs": [],
"source": [
"a = [1,2,3,\"mitsos\", 5, 7.77777778]"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 262,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(a) # Το πλήθος όλων των στοιχείων της λίστας"
]
},
{
"cell_type": "code",
"execution_count": 263,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 263,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.count(1) # Πόσες φορές υπάρχει το 1 μέσα στη λίστα;"
]
},
{
"cell_type": "code",
"execution_count": 264,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 264,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.count(55) # Πόσες φορές υπάρχει το 55 μέσα στη λίστα;"
]
},
{
"cell_type": "code",
"execution_count": 265,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 265,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.index(\"mitsos\") # Σε ποια θέση της λίστας εμφανίζεται το \"mitsos\"?"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "4 is not in list",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-266-e644608c73eb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Σε ποια θέση της λίστας εμφανίζεται το 4;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mValueError\u001b[0m: 4 is not in list"
]
}
],
"source": [
"a.index(4) # Σε ποια θέση της λίστας εμφανίζεται το 4;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μία λίστα μπορεί να έχει μέσα άλλες λίστες!"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"a = [1,2, [3,4,5], 6, 7]"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(a)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 4, 5]"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[2]"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[1]"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[2][1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Υπάρχει επίσης η άδεια λίστα: ```[]```"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n"
]
}
],
"source": [
"a = []\n",
"print (len(a))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να γράψουμε τις λίστες με πολλούς τρόπους:"
]
},
{
"cell_type": "code",
"execution_count": 269,
"metadata": {},
"outputs": [],
"source": [
"# Τα παρακάτω είναι ισοδύαναμα:\n",
"a = [1,2,3] \n",
"\n",
"a = [\n",
" 1,\n",
" 2,\n",
" 3,\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Προσοχή!** Δεν υπάρχει πρόβλημα αν βάλουμε ένα κόμμα στο τέλος μίας λίστας!"
]
},
{
"cell_type": "code",
"execution_count": 270,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3]\n",
"[1, 2, 3]\n"
]
}
],
"source": [
"# Αυτά τα δύο είναι ισοδύναμα:\n",
"print ([1,2,3]) \n",
"print ([1,2,3,])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Οπότε αν βάλουμε ένα κόμμα στο τέλος δεν υπάρχει πρόβλημα. Υπάρχει όμως αν ΔΕΝ βάλουμε στη μέση:"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"a = [\n",
" 'aaaa',\n",
" 'bbbb' # PROSOXH! auto einai 1 string (me to apo katw)\n",
" 'cccc'\n",
"]\n",
"print (len(a))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μία λίστα μπορεί να έχει μία λίστα, που έχει μία λίστα που έχει.."
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
}
],
"source": [
"a = [[]]\n",
"print (len(a))"
]
},
{
"cell_type": "code",
"execution_count": 279,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
}
],
"source": [
"a = [[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]\n",
"print (len(a))"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [],
"source": [
"a = [1,2,3,[],4]"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μία λίστα μπορεί να έχει μεταβλητές:"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[3, 3, 4, 1.5]\n"
]
}
],
"source": [
"a=3\n",
"b = [a,a,a+1, a/2]\n",
"print (b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να προσθέσουμε δύο λίστες:"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 'mitsos', 'a']"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[1,2,3] + [\"mitsos\", \"a\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Μπορούμε να πολλαπλασιάσουμε μία λίστα με έναν αριθμό:"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[1,2,3] *4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Δεν μπορούμε να πολλαπλασιάσουμε ή να αφαιρέσουμε δύο λίστες!"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "can't multiply sequence by non-int of type 'list'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-133-4f81883a1dc4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'list'"
]
}
],
"source": [
"[1,2,3] * [5,6]"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "unsupported operand type(s) for -: 'list' and 'list'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-134-d5954fea0119>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"mitsos\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"a\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for -: 'list' and 'list'"
]
}
],
"source": [
"[1,2,3] - [\"mitsos\", \"a\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Η πράξη: += "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Έστω ότι έχουμε μία μεταβλητή που έχει την τιμή 3:"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n"
]
}
],
"source": [
"a = 3\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Πως μπορούμε να της αυξήσουμε τη τιμή κατά 1;"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
}
],
"source": [
"a = a + 1\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Το ```a=a+1``` χρησημοποιείται πολύ συχνά (στην ουσία κάθε φορά που \"μετράμε\" κάτι). Οπότε μπορούμε να το γράψουμε και σαν: ```a += 1```. Παρομοίως μπορούμε να γράψουμε και ```a += 4```"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8\n"
]
}
],
"source": [
"a += 4 # a = a + 4\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Το ίδιο μπορεί να γίνει με όλες τις άλλες πράξεις. Π.χ. το ```a -= 1``` είναι ισοδύναμε με ```a = a - 1```. "
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n"
]
}
],
"source": [
"a -= 1\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αφού η πράξη της πρόσθεσης επιτρέπεται μεταξύ λίστες, μπορούμε να χρησιμοποιήσουμε το ```+=``` για να προσθέσουμε στοιχεία σε μία λίστα:"
]
},
{
"cell_type": "code",
"execution_count": 281,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 5, 6]\n"
]
}
],
"source": [
"a = [1,2,3]\n",
"a += [5,6] # Αυτό είναι ισοδύναμο με: a = a + [5,6]\n",
"print (a)"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 0, 1]\n"
]
}
],
"source": [
"a = [1,2,3,4]\n",
"a += [0,1] \n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ένας άλλον τρόπος να εισάγουμε νέα στοιχεία σε μία λίστα είναι μέσω της ```extend```. Η ```extend``` είναι ισοδύναμη με το ```+=```:"
]
},
{
"cell_type": "code",
"execution_count": 295,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 0, 1]\n"
]
}
],
"source": [
"a = [1,2,3,4]\n",
"a.extend([0,1]) # equivalent with a += [0,1]\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"H ```extend``` δέχεται ως όρισμα μόνο λίστα!"
]
},
{
"cell_type": "code",
"execution_count": 298,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'int' object is not iterable",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-298-396500df017c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'int' object is not iterable"
]
}
],
"source": [
"a = [1,2,3,4,5]\n",
"a.extend(8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Αν θελουμε να βάλουμε ΕΝΑ στοιχείο στη λίστα μπορούμε να χρησιμοποιήσουμε την ```append```. Η ```a.append(b)``` είναι ισοδύναμη με: ```a += [b]``` ή ```a = a + [b]```"
]
},
{
"cell_type": "code",
"execution_count": 296,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, [0, 1]]\n"
]
}
],
"source": [
"a = [1,2,3,4]\n",
"a.append([0,1])\n",
"print (a)"
]
},
{
"cell_type": "code",
"execution_count": 297,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5, 8]\n"
]
}
],
"source": [
"a = [1,2,3,4,5]\n",
"a.append(8)\n",
"print (a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Βοήθεια και οδηγίες\n",
"Η python περιέχει κάποιες βασικές οδηγίες και βοήθεια:"
]
},
{
"cell_type": "code",
"execution_count": 300,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on built-in function len in module builtins:\n",
"\n",
"len(obj, /)\n",
" Return the number of items in a container.\n",
"\n"
]
}
],
"source": [
"help(len)"
]
},
{
"cell_type": "code",
"execution_count": 301,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on built-in function count:\n",
"\n",
"count(...) method of builtins.str instance\n",
" S.count(sub[, start[, end]]) -> int\n",
" \n",
" Return the number of non-overlapping occurrences of substring sub in\n",
" string S[start:end]. Optional arguments start and end are\n",
" interpreted as in slice notation.\n",
"\n"
]
}
],
"source": [
"help(\"\".count)"
]
},
{
"cell_type": "code",
"execution_count": 303,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on built-in function append:\n",
"\n",
"append(...) method of builtins.list instance\n",
" L.append(object) -> None -- append object to end\n",
"\n"
]
}
],
"source": [
"help([].append)"
]
}
],
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment