X Tutup
# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2024, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-04 09:48+0200\n" "PO-Revision-Date: 2025-11-29 09:18+0200\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.5\n" #: tutorial/datastructures.rst:5 msgid "Data Structures" msgstr "Δομές Δεδομένων" #: tutorial/datastructures.rst:7 msgid "" "This chapter describes some things you've learned about already in more " "detail, and adds some new things as well." msgstr "" "Αυτό το κεφάλαιο περιγράφει ορισμένα πράγματα τα οποία έχετε μάθει ήδη με " "περισσότερες λεπτομέρειες και προσθέτει επίσης μερικά νέα." #: tutorial/datastructures.rst:13 msgid "More on Lists" msgstr "Περισσότερα για τις Λίστες" #: tutorial/datastructures.rst:15 msgid "" "The :ref:`list ` data type has some more methods. Here are " "all of the methods of list objects:" msgstr "" "Ο τύπος δεδομένων :ref:`λίστα ` έχει μερικές ακόμη μεθόδους. " "Εδώ είναι όλες οι μέθοδοι των αντικειμένων λίστας:" #: tutorial/datastructures.rst:21 msgid "Add an item to the end of the list. Similar to ``a[len(a):] = [x]``." msgstr "" "Προσθέτει ένα στοιχείο στο τέλος της λίστας. Παρόμοιο με ``a[len(a):] = " "[x]``." #: tutorial/datastructures.rst:27 msgid "" "Extend the list by appending all the items from the iterable. Similar to " "``a[len(a):] = iterable``." msgstr "" "Επεκτείνει τη λίστα προσθέτοντας όλα τα στοιχεία από το iterable. Παρόμοιο " "με ``a[len(a):] = iterable``." #: tutorial/datastructures.rst:34 msgid "" "Insert an item at a given position. The first argument is the index of the " "element before which to insert, so ``a.insert(0, x)`` inserts at the front " "of the list, and ``a.insert(len(a), x)`` is equivalent to ``a.append(x)``." msgstr "" "Εισάγει ένα στοιχείο σε μια δεδομένη θέση. Το πρώτο όρισμα είναι το index " "του στοιχείου πριν από το οποίο θα εισαχθεί, επομένως ``a.insert(0, x)`` " "εισάγεται στο μπροστινό μέρος της λίστας, και το ``a.insert(len(a), x)`` " "ισοδυναμεί με ``a.append(x)``." #: tutorial/datastructures.rst:42 msgid "" "Remove the first item from the list whose value is equal to *x*. It raises " "a :exc:`ValueError` if there is no such item." msgstr "" "Καταργεί το πρώτο στοιχείο από τη λίστα του οποίου η τιμή είναι ίση με *x*. " "Κάνει raise ένα :exc:`ValueError` εάν δεν υπάρχει τέτοιο στοιχείο." #: tutorial/datastructures.rst:49 msgid "" "Remove the item at the given position in the list, and return it. If no " "index is specified, ``a.pop()`` removes and returns the last item in the " "list. It raises an :exc:`IndexError` if the list is empty or the index is " "outside the list range." msgstr "" "Καταργεί το στοιχείο στη δεδομένη θέση στη λίστα, και το επιστρέφει. Εάν " "δεν έχει καθοριστεί ευρετήριο, το ``a.pop()`` αφαιρεί και επιστρέφει το " "τελευταίο στοιχείο στη λίστα. Κάνει raise ένα :exc:`IndexError` εάν η λίστα " "είναι κενή ή το ευρετήριο βρίσκεται εκτός του εύρους της λίστας." #: tutorial/datastructures.rst:58 msgid "Remove all items from the list. Similar to ``del a[:]``." msgstr "Αφαιρεί όλα τα στοιχεία από τη λίστα. Παρόμοιο με ``del a[:]``." #: tutorial/datastructures.rst:64 msgid "" "Return zero-based index of the first occurrence of *x* in the list. Raises " "a :exc:`ValueError` if there is no such item." msgstr "" "Επιστρέφει τον μηδενικό δείκτη της πρώτης εμφάνισης του *x* στη λίστα. Κάνει " "raise μια :exc:`ValueError` εάν δεν υπάρχει τέτοιο στοιχείο." #: tutorial/datastructures.rst:67 msgid "" "The optional arguments *start* and *end* are interpreted as in the slice " "notation and are used to limit the search to a particular subsequence of the " "list. The returned index is computed relative to the beginning of the full " "sequence rather than the *start* argument." msgstr "" "Τα προαιρετικά ορίσματα *start* και *end* ερμηνεύονται όπως στη σημειογραφία " "slice και χρησιμοποιούνται για τον περιορισμό της αναζήτησης σε μια " "συγκεκριμένη υποακολουθία της λίστας. Ο επιστρεφόμενος δείκτης υπολογίζεται " "σε σχέση με την αρχή της πλήρους ακολουθίας αντί για το όρισμα *start*." #: tutorial/datastructures.rst:76 msgid "Return the number of times *x* appears in the list." msgstr "Επιστρέφει τον αριθμό των φορών που εμφανίζεται το *x* στη λίστα." #: tutorial/datastructures.rst:82 msgid "" "Sort the items of the list in place (the arguments can be used for sort " "customization, see :func:`sorted` for their explanation)." msgstr "" "Ταξινομεί τα στοιχεία της λίστας στη θέση τους (τα ορίσματα μπορούν να " "χρησιμοποιηθούν για προσαρμογή ταξινόμησης, βλ. :func:`sorted` για την " "εξήγησή τους)." #: tutorial/datastructures.rst:89 msgid "Reverse the elements of the list in place." msgstr "Αντιστρέφει τα στοιχεία της λίστας στη θέση τους." #: tutorial/datastructures.rst:95 msgid "Return a shallow copy of the list. Similar to ``a[:]``." msgstr "" "Επιστρέφει ένα shallow (ρηχό) αντίγραφο της λίστας. Παρόμοιο με ``a[:]``." #: tutorial/datastructures.rst:98 msgid "An example that uses most of the list methods::" msgstr "" "Ένα παράδειγμα που χρησιμοποιεί τις περισσότερες από τις μεθόδους της " "λίστας::" #: tutorial/datastructures.rst:100 msgid "" ">>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', " "'banana']\n" ">>> fruits.count('apple')\n" "2\n" ">>> fruits.count('tangerine')\n" "0\n" ">>> fruits.index('banana')\n" "3\n" ">>> fruits.index('banana', 4) # Find next banana starting at position 4\n" "6\n" ">>> fruits.reverse()\n" ">>> fruits\n" "['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']\n" ">>> fruits.append('grape')\n" ">>> fruits\n" "['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']\n" ">>> fruits.sort()\n" ">>> fruits\n" "['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']\n" ">>> fruits.pop()\n" "'pear'" msgstr "" ">>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', " "'banana']\n" ">>> fruits.count('apple')\n" "2\n" ">>> fruits.count('tangerine')\n" "0\n" ">>> fruits.index('banana')\n" "3\n" ">>> fruits.index('banana', 4) # Find next banana starting at position 4\n" "6\n" ">>> fruits.reverse()\n" ">>> fruits\n" "['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']\n" ">>> fruits.append('grape')\n" ">>> fruits\n" "['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']\n" ">>> fruits.sort()\n" ">>> fruits\n" "['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']\n" ">>> fruits.pop()\n" "'pear'" #: tutorial/datastructures.rst:121 msgid "" "You might have noticed that methods like ``insert``, ``remove`` or ``sort`` " "that only modify the list have no return value printed -- they return the " "default ``None``. [#]_ This is a design principle for all mutable data " "structures in Python." msgstr "" "Μπορεί να έχετε παρατηρήσει ότι μέθοδοι όπως ``insert``, ``remove`` or " "``sort`` που τροποποιούν μόνο τη λίστα δεν έχουν εκτυπωμένη τιμή επιστροφής " "-- επιστρέφουν το προεπιλεγμένο (default) ``None``. [#]_ Αυτή είναι μια " "αρχή σχεδιασμού για όλες τις μεταβλητές δομές δεδομένων στην Python." #: tutorial/datastructures.rst:126 msgid "" "Another thing you might notice is that not all data can be sorted or " "compared. For instance, ``[None, 'hello', 10]`` doesn't sort because " "integers can't be compared to strings and ``None`` can't be compared to " "other types. Also, there are some types that don't have a defined ordering " "relation. For example, ``3+4j < 5+7j`` isn't a valid comparison." msgstr "" "Ένα άλλο πράγμα που μπορεί να παρατηρήσετε είναι ότι δεν μπορούν να " "ταξινομηθούν ή να συγκριθούν όλα τα δεδομένα. Για παράδειγμα, ``[None, " "'hello', 10]`` δεν ταξινομούνται γιατί ακέραιοι αριθμοί δεν μπορούν να " "συγκριθούν με συμβολοσειρές (strings) και το ``None`` δεν μπορεί να " "συγκριθεί με άλλους τύπους. Επίσης, υπάρχουν ορισμένοι τύποι που δεν έχουν " "καθορισμένη σχέση διάταξης. Για παράδειγμα, το ``3+4j < 5+7j`` δεν είναι " "έγκυρη σύγκριση." #: tutorial/datastructures.rst:137 msgid "Using Lists as Stacks" msgstr "Χρήστη Λιστών ως Στοίβες (Stacks)" #: tutorial/datastructures.rst:142 msgid "" "The list methods make it very easy to use a list as a stack, where the last " "element added is the first element retrieved (\"last-in, first-out\"). To " "add an item to the top of the stack, use :meth:`~list.append`. To retrieve " "an item from the top of the stack, use :meth:`~list.pop` without an explicit " "index. For example::" msgstr "" "Οι μέθοδοι λίστας καθιστούν πιο εύκολη τη χρήση μιας λίστα ως στοίβας " "(stack), όπου το τελευταίο στοιχείο που προστέθηκε είναι το πρώτο στοιχείο " "που ανακτήθηκε (\"last-in, first-out\"). Για να προσθέσετε ένα στοιχείο " "στην κορυφή της στοίβας, χρησιμοποιήστε την :meth:`~list.append`. Για να " "ανακτήσετε ένα στοιχείο από την κορυφή της στοίβας, χρησιμοποιήστε την :meth:" "`~list.pop` χωρίς κάποιο σαφές index. Για παράδειγμα::" #: tutorial/datastructures.rst:147 msgid "" ">>> stack = [3, 4, 5]\n" ">>> stack.append(6)\n" ">>> stack.append(7)\n" ">>> stack\n" "[3, 4, 5, 6, 7]\n" ">>> stack.pop()\n" "7\n" ">>> stack\n" "[3, 4, 5, 6]\n" ">>> stack.pop()\n" "6\n" ">>> stack.pop()\n" "5\n" ">>> stack\n" "[3, 4]" msgstr "" ">>> stack = [3, 4, 5]\n" ">>> stack.append(6)\n" ">>> stack.append(7)\n" ">>> stack\n" "[3, 4, 5, 6, 7]\n" ">>> stack.pop()\n" "7\n" ">>> stack\n" "[3, 4, 5, 6]\n" ">>> stack.pop()\n" "6\n" ">>> stack.pop()\n" "5\n" ">>> stack\n" "[3, 4]" #: tutorial/datastructures.rst:167 msgid "Using Lists as Queues" msgstr "Χρήση λιστών ως Ουρές (Queues)" #: tutorial/datastructures.rst:171 msgid "" "It is also possible to use a list as a queue, where the first element added " "is the first element retrieved (\"first-in, first-out\"); however, lists are " "not efficient for this purpose. While appends and pops from the end of list " "are fast, doing inserts or pops from the beginning of a list is slow " "(because all of the other elements have to be shifted by one)." msgstr "" "Είναι επίσης δυνατό να χρησιμοποιηθεί μια λίστα ως ουρά (queue), όπου το " "πρώτο στοιχείο που προστίθεται είναι το πρώτο στοιχείο που ανακτάται " "(\"first-in, first-out\") ∙ ωστόσο, οι λίστες δεν είναι αποτελεσματικές για " "αυτόν τον σκοπό. Ενώ το να προσθέσεις και να αφαιρέσεις (στοιχεία) στο " "τέλος της λίστας είναι γρήγορο, κάνοντας αυτές τις προσθέσεις και τις " "αφαιρέσεις (στοιχείων) στην αρχή της λίστα είναι αργό (επειδή όλα τα " "στοιχεία πρέπει να μετατοπιστούν κατά ένα)." #: tutorial/datastructures.rst:177 msgid "" "To implement a queue, use :class:`collections.deque` which was designed to " "have fast appends and pops from both ends. For example::" msgstr "" "Για να εφαρμόσετε μια ουρά (queue), χρησιμοποιήστε την :class:`collections." "deque` η οποία σχεδιάστηκε για να έχει γρήγορες προσθέσεις και αφαιρέσεις " "και από τα δύο άκρα. Για παράδειγμα:΅:" #: tutorial/datastructures.rst:180 msgid "" ">>> from collections import deque\n" ">>> queue = deque([\"Eric\", \"John\", \"Michael\"])\n" ">>> queue.append(\"Terry\") # Terry arrives\n" ">>> queue.append(\"Graham\") # Graham arrives\n" ">>> queue.popleft() # The first to arrive now leaves\n" "'Eric'\n" ">>> queue.popleft() # The second to arrive now leaves\n" "'John'\n" ">>> queue # Remaining queue in order of arrival\n" "deque(['Michael', 'Terry', 'Graham'])" msgstr "" ">>> from collections import deque\n" ">>> queue = deque([\"Eric\", \"John\", \"Michael\"])\n" ">>> queue.append(\"Terry\") # Terry arrives\n" ">>> queue.append(\"Graham\") # Graham arrives\n" ">>> queue.popleft() # The first to arrive now leaves\n" "'Eric'\n" ">>> queue.popleft() # The second to arrive now leaves\n" "'John'\n" ">>> queue # Remaining queue in order of arrival\n" "deque(['Michael', 'Terry', 'Graham'])" #: tutorial/datastructures.rst:195 msgid "List Comprehensions" msgstr "Comprehensions Λίστας" #: tutorial/datastructures.rst:197 msgid "" "List comprehensions provide a concise way to create lists. Common " "applications are to make new lists where each element is the result of some " "operations applied to each member of another sequence or iterable, or to " "create a subsequence of those elements that satisfy a certain condition." msgstr "" "Τα comprehensions λίστας παρέχουν ένα συνοπτικό τρόπο δημιουργίας λιστών. Οι " "συνήθεις εφαρμογές είναι η δημιουργία νέων λιστών όπου κάθε στοιχείο είναι " "το αποτέλεσμα κάποιων πράξεων που εφαρμόζονται σε κάθε μέλος μιας άλλης " "ακολουθίας ή iterable, ή η δημιουργία μιας υποακολουθίας αυτών των στοιχείων " "που ικανοποιούν μια συγκεκριμένη συνθήκη." #: tutorial/datastructures.rst:202 msgid "For example, assume we want to create a list of squares, like::" msgstr "" "Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε μια λίστα " "τετραγώνων όπως::" #: tutorial/datastructures.rst:204 msgid "" ">>> squares = []\n" ">>> for x in range(10):\n" "... squares.append(x**2)\n" "...\n" ">>> squares\n" "[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]" msgstr "" ">>> squares = []\n" ">>> for x in range(10):\n" "... squares.append(x**2)\n" "...\n" ">>> squares\n" "[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]" #: tutorial/datastructures.rst:211 msgid "" "Note that this creates (or overwrites) a variable named ``x`` that still " "exists after the loop completes. We can calculate the list of squares " "without any side effects using::" msgstr "" "Λάβετε υπόψη ότι αυτό δημιουργεί (ή αντικαθιστά) μια μεταβλητή με το όνομα " "``x`` που εξακολουθεί να υπάρχει μετά την ολοκλήρωση της loop. Μπορούμε να " "υπολογίσουμε τη λίστα των τετραγώνων χωρίς παρενέργειες χρησιμοποιώντας::" #: tutorial/datastructures.rst:215 msgid "squares = list(map(lambda x: x**2, range(10)))" msgstr "squares = list(map(lambda x: x**2, range(10)))" #: tutorial/datastructures.rst:217 msgid "or, equivalently::" msgstr "ή, ισοδύναμα::" #: tutorial/datastructures.rst:219 msgid "squares = [x**2 for x in range(10)]" msgstr "squares = [x**2 for x in range(10)]" #: tutorial/datastructures.rst:221 msgid "which is more concise and readable." msgstr "που είναι πιο συνοπτικό και ευανάγνωστο." #: tutorial/datastructures.rst:223 msgid "" "A list comprehension consists of brackets containing an expression followed " "by a :keyword:`!for` clause, then zero or more :keyword:`!for` or :keyword:`!" "if` clauses. The result will be a new list resulting from evaluating the " "expression in the context of the :keyword:`!for` and :keyword:`!if` clauses " "which follow it. For example, this listcomp combines the elements of two " "lists if they are not equal::" msgstr "" "Ένα comprehension λίστας αποτελείται από αγκύλες που περιέχουν μια έκφραση " "ακολουθούμενη από μια πρόταση :keyword:`!for`, στη συνέχεια μηδέν ή " "περισσότερες προτάσεις :keyword:`!for` ή :keyword:`!if`. Το αποτέλεσμα θα " "είναι μια νέα λίστα που προκύπτει από την αξιολόγηση της έκφρασης στο " "πλαίσιο των προτάσεων :keyword:`!for` και :keyword:`!if` που την ακολουθούν. " "Για παράδειγμα, αυτή η λίστα συνδυάζει τα στοιχεία δύο λιστών εάν δεν είναι " "ίσες::" #: tutorial/datastructures.rst:230 msgid "" ">>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]\n" "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]" msgstr "" ">>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]\n" "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]" #: tutorial/datastructures.rst:233 msgid "and it's equivalent to::" msgstr "και ισοδυναμεί με::" #: tutorial/datastructures.rst:235 msgid "" ">>> 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" "...\n" ">>> combs\n" "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]" msgstr "" ">>> 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" "...\n" ">>> combs\n" "[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]" #: tutorial/datastructures.rst:244 msgid "" "Note how the order of the :keyword:`for` and :keyword:`if` statements is the " "same in both these snippets." msgstr "" "Σημειώστε πώς η σειρά των δηλώσεων :keyword:`for` και :keyword:`if` είναι " "ίδια και στα δύο αποσπάσματα." #: tutorial/datastructures.rst:247 msgid "" "If the expression is a tuple (e.g. the ``(x, y)`` in the previous example), " "it must be parenthesized. ::" msgstr "" "Εάν η έκφραση είναι πλειάδα (π.χ. το ``(x, y)`` στο προηγούμενο παράδειγμα), " "πρέπει να μπει σε παρένθεση. ::" #: tutorial/datastructures.rst:250 msgid "" ">>> vec = [-4, -2, 0, 2, 4]\n" ">>> # create a new list with the values doubled\n" ">>> [x*2 for x in vec]\n" "[-8, -4, 0, 4, 8]\n" ">>> # filter the list to exclude negative numbers\n" ">>> [x for x in vec if x >= 0]\n" "[0, 2, 4]\n" ">>> # apply a function to all the elements\n" ">>> [abs(x) for x in vec]\n" "[4, 2, 0, 2, 4]\n" ">>> # call a method on each element\n" ">>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']\n" ">>> [weapon.strip() for weapon in freshfruit]\n" "['banana', 'loganberry', 'passion fruit']\n" ">>> # create a list of 2-tuples like (number, square)\n" ">>> [(x, x**2) for x in range(6)]\n" "[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]\n" ">>> # the tuple must be parenthesized, otherwise an error is raised\n" ">>> [x, x**2 for x in range(6)]\n" " File \"\", line 1\n" " [x, x**2 for x in range(6)]\n" " ^^^^^^^\n" "SyntaxError: did you forget parentheses around the comprehension target?\n" ">>> # flatten a list using a listcomp with two 'for'\n" ">>> vec = [[1,2,3], [4,5,6], [7,8,9]]\n" ">>> [num for elem in vec for num in elem]\n" "[1, 2, 3, 4, 5, 6, 7, 8, 9]" msgstr "" ">>> vec = [-4, -2, 0, 2, 4]\n" ">>> # create a new list with the values doubled\n" ">>> [x*2 for x in vec]\n" "[-8, -4, 0, 4, 8]\n" ">>> # filter the list to exclude negative numbers\n" ">>> [x for x in vec if x >= 0]\n" "[0, 2, 4]\n" ">>> # apply a function to all the elements\n" ">>> [abs(x) for x in vec]\n" "[4, 2, 0, 2, 4]\n" ">>> # call a method on each element\n" ">>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']\n" ">>> [weapon.strip() for weapon in freshfruit]\n" "['banana', 'loganberry', 'passion fruit']\n" ">>> # create a list of 2-tuples like (number, square)\n" ">>> [(x, x**2) for x in range(6)]\n" "[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]\n" ">>> # the tuple must be parenthesized, otherwise an error is raised\n" ">>> [x, x**2 for x in range(6)]\n" " File \"\", line 1\n" " [x, x**2 for x in range(6)]\n" " ^^^^^^^\n" "SyntaxError: did you forget parentheses around the comprehension target?\n" ">>> # flatten a list using a listcomp with two 'for'\n" ">>> vec = [[1,2,3], [4,5,6], [7,8,9]]\n" ">>> [num for elem in vec for num in elem]\n" "[1, 2, 3, 4, 5, 6, 7, 8, 9]" #: tutorial/datastructures.rst:278 msgid "" "List comprehensions can contain complex expressions and nested functions::" msgstr "" "Τα comprehensions λίστας μπορεί να περιέχουν σύνθετες εκφράσεις και ένθετες " "συναρτήσεις::" #: tutorial/datastructures.rst:280 msgid "" ">>> from math import pi\n" ">>> [str(round(pi, i)) for i in range(1, 6)]\n" "['3.1', '3.14', '3.142', '3.1416', '3.14159']" msgstr "" ">>> from math import pi\n" ">>> [str(round(pi, i)) for i in range(1, 6)]\n" "['3.1', '3.14', '3.142', '3.1416', '3.14159']" #: tutorial/datastructures.rst:285 msgid "Nested List Comprehensions" msgstr "Comprehensions Ένθετων Λιστών" #: tutorial/datastructures.rst:287 msgid "" "The initial expression in a list comprehension can be any arbitrary " "expression, including another list comprehension." msgstr "" "Η αρχική έκφραση σε ένα comprehension λίστας μπορεί να είναι οποιαδήποτε " "αυθαίρετη έκφραση, συμπεριλαμβανομένης ενός άλλου comprehension λίστας." #: tutorial/datastructures.rst:290 msgid "" "Consider the following example of a 3x4 matrix implemented as a list of 3 " "lists of length 4::" msgstr "" "Σκεφτείτε το ακόλουθο παράδειγμα μιας μήτρας 3x4 που υλοποιήθηκε ως μια " "λίστα 3 λιστών μήκους 4::" #: tutorial/datastructures.rst:293 msgid "" ">>> matrix = [\n" "... [1, 2, 3, 4],\n" "... [5, 6, 7, 8],\n" "... [9, 10, 11, 12],\n" "... ]" msgstr "" ">>> matrix = [\n" "... [1, 2, 3, 4],\n" "... [5, 6, 7, 8],\n" "... [9, 10, 11, 12],\n" "... ]" #: tutorial/datastructures.rst:299 msgid "The following list comprehension will transpose rows and columns::" msgstr "Το ακόλουθο comprehension λίστας θα μεταφέρει γραμμές και στήλες::" #: tutorial/datastructures.rst:301 msgid "" ">>> [[row[i] for row in matrix] for i in range(4)]\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" msgstr "" ">>> [[row[i] for row in matrix] for i in range(4)]\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" #: tutorial/datastructures.rst:304 msgid "" "As we saw in the previous section, the inner list comprehension is evaluated " "in the context of the :keyword:`for` that follows it, so this example is " "equivalent to::" msgstr "" "Όπως είδαμε στην προηγούμενη ενότητα, το comprehension της εσωτερικής λίστας " "αξιολογείται στο πλαίσιο του :keyword:`for` που την ακολουθεί, επομένως αυτό " "το παράδειγμα είναι ισοδύναμο με::" #: tutorial/datastructures.rst:308 msgid "" ">>> transposed = []\n" ">>> for i in range(4):\n" "... transposed.append([row[i] for row in matrix])\n" "...\n" ">>> transposed\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" msgstr "" ">>> transposed = []\n" ">>> for i in range(4):\n" "... transposed.append([row[i] for row in matrix])\n" "...\n" ">>> transposed\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" #: tutorial/datastructures.rst:315 msgid "which, in turn, is the same as::" msgstr "το οποίο, με τη σειρά του, είναι το ίδιο με::" #: tutorial/datastructures.rst:317 msgid "" ">>> transposed = []\n" ">>> for i in range(4):\n" "... # the following 3 lines implement the nested listcomp\n" "... transposed_row = []\n" "... for row in matrix:\n" "... transposed_row.append(row[i])\n" "... transposed.append(transposed_row)\n" "...\n" ">>> transposed\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" msgstr "" ">>> transposed = []\n" ">>> for i in range(4):\n" "... # the following 3 lines implement the nested listcomp\n" "... transposed_row = []\n" "... for row in matrix:\n" "... transposed_row.append(row[i])\n" "... transposed.append(transposed_row)\n" "...\n" ">>> transposed\n" "[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]" #: tutorial/datastructures.rst:328 msgid "" "In the real world, you should prefer built-in functions to complex flow " "statements. The :func:`zip` function would do a great job for this use case::" msgstr "" "Στον πραγματικό κόσμο, θα πρέπει να προτιμάτε τις ενσωματωμένες (built-in) " "συναρτήσεις από τις σύνθετες εντολές ροής. Η συνάρτηση :func:`zip` θα έκανε " "εξαιρετική δουλειά για αυτήν την περίπτωση χρήσης::" #: tutorial/datastructures.rst:331 msgid "" ">>> list(zip(*matrix))\n" "[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]" msgstr "" ">>> list(zip(*matrix))\n" "[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]" #: tutorial/datastructures.rst:334 msgid "" "See :ref:`tut-unpacking-arguments` for details on the asterisk in this line." msgstr "" "Δείτε :ref:`tut-unpacking-arguments` για λεπτομέρειες σχετικά με τον " "αστερίσκο σε αυτήν τη γραμμή." #: tutorial/datastructures.rst:339 msgid "The :keyword:`!del` statement" msgstr "Η δήλωση :keyword:`!del`" #: tutorial/datastructures.rst:341 msgid "" "There is a way to remove an item from a list given its index instead of its " "value: the :keyword:`del` statement. This differs from the :meth:`~list." "pop` method which returns a value. The :keyword:`!del` statement can also " "be used to remove slices from a list or clear the entire list (which we did " "earlier by assignment of an empty list to the slice). For example::" msgstr "" "Υπάρχει ένας τρόπος να αφαιρέσετε ένα στοιχείο από μια λίστα με το ευρετήριο " "του αντί για την τιμή του: η δήλωση :keyword:`del`. Αυτό διαφέρει από τη " "μέθοδο :meth:`~list.pop` που επιστρέφει μια τιμή. Η δήλωση :keyword:`!del` " "μπορεί επίσης να χρησιμοποιηθεί για την αφαίρεση τμημάτων από μια λίστα ή " "για να καθαρίσει ολόκληρη τη λίστα (που κάναμε νωρίτερα με την εκχώρηση μιας " "κενής λίστας στο τμήμα). Για παράδειγμα::" #: tutorial/datastructures.rst:347 msgid "" ">>> a = [-1, 1, 66.25, 333, 333, 1234.5]\n" ">>> del a[0]\n" ">>> a\n" "[1, 66.25, 333, 333, 1234.5]\n" ">>> del a[2:4]\n" ">>> a\n" "[1, 66.25, 1234.5]\n" ">>> del a[:]\n" ">>> a\n" "[]" msgstr "" ">>> a = [-1, 1, 66.25, 333, 333, 1234.5]\n" ">>> del a[0]\n" ">>> a\n" "[1, 66.25, 333, 333, 1234.5]\n" ">>> del a[2:4]\n" ">>> a\n" "[1, 66.25, 1234.5]\n" ">>> del a[:]\n" ">>> a\n" "[]" #: tutorial/datastructures.rst:358 msgid ":keyword:`del` can also be used to delete entire variables::" msgstr "" "Το :keyword:`del` μπορεί επίσης να χρησιμοποιηθεί για τη διαγραφή ολόκληρων " "μεταβλητών::" #: tutorial/datastructures.rst:360 msgid ">>> del a" msgstr ">>> del a" #: tutorial/datastructures.rst:362 msgid "" "Referencing the name ``a`` hereafter is an error (at least until another " "value is assigned to it). We'll find other uses for :keyword:`del` later." msgstr "" "Η αναφορά στο όνομα ``a`` στο εξής είναι ένα σφάλμα (τουλάχιστον μέχρι να " "του εκχωρηθεί άλλη τιμή). Θα βρούμε άλλες χρήσεις για το :keyword:`del` " "αργότερα." #: tutorial/datastructures.rst:369 msgid "Tuples and Sequences" msgstr "Πλειάδες (Tuples) και Ακολουθίες" #: tutorial/datastructures.rst:371 msgid "" "We saw that lists and strings have many common properties, such as indexing " "and slicing operations. They are two examples of *sequence* data types " "(see :ref:`typesseq`). Since Python is an evolving language, other sequence " "data types may be added. There is also another standard sequence data type: " "the *tuple*." msgstr "" "Είδαμε ότι οι λίστες και οι συμβολοσειρές (strings) έχουνε πολλές κοινές " "ιδιότητες, όπως λειτουργίες indexing και slicing. Είναι δύο παραδείγματα " "τύπων δεδομένων *sequence* (δείτε :ref:`typesseq`). Δεδομένου ότι η Python " "είναι μια εξελισσόμενη γλώσσα, άλλοι τύποι δεδομένων ακολουθίας μπορούν να " "προστεθούν. Υπάρχει επίσης ένας άλλος τυπικός τύπος δεδομένων ακολουθίας " "type: the *πλειάδα* (*tuple*)." #: tutorial/datastructures.rst:377 msgid "" "A tuple consists of a number of values separated by commas, for instance::" msgstr "" "Μια πλειάδα (tuple) αποτελείται από έναν αριθμό τιμών που χωρίζονται με " "κόμματα, για παράδειγμα::" #: tutorial/datastructures.rst:379 msgid "" ">>> t = 12345, 54321, 'hello!'\n" ">>> t[0]\n" "12345\n" ">>> t\n" "(12345, 54321, 'hello!')\n" ">>> # Tuples may be nested:\n" ">>> u = t, (1, 2, 3, 4, 5)\n" ">>> u\n" "((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))\n" ">>> # Tuples are immutable:\n" ">>> t[0] = 88888\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'tuple' object does not support item assignment\n" ">>> # but they can contain mutable objects:\n" ">>> v = ([1, 2, 3], [3, 2, 1])\n" ">>> v\n" "([1, 2, 3], [3, 2, 1])" msgstr "" ">>> t = 12345, 54321, 'hello!'\n" ">>> t[0]\n" "12345\n" ">>> t\n" "(12345, 54321, 'hello!')\n" ">>> # Tuples may be nested:\n" ">>> u = t, (1, 2, 3, 4, 5)\n" ">>> u\n" "((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))\n" ">>> # Tuples are immutable:\n" ">>> t[0] = 88888\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'tuple' object does not support item assignment\n" ">>> # but they can contain mutable objects:\n" ">>> v = ([1, 2, 3], [3, 2, 1])\n" ">>> v\n" "([1, 2, 3], [3, 2, 1])" #: tutorial/datastructures.rst:399 msgid "" "As you see, on output tuples are always enclosed in parentheses, so that " "nested tuples are interpreted correctly; they may be input with or without " "surrounding parentheses, although often parentheses are necessary anyway (if " "the tuple is part of a larger expression). It is not possible to assign to " "the individual items of a tuple, however it is possible to create tuples " "which contain mutable objects, such as lists." msgstr "" "Όπως βλέπετε, οι πλειάδες (tuples) στην έξοδο περικλείονται πάντα σε " "παρενθέσεις, έτσι ώστε οι ένθετε πλειάδες (tuples) να ερμηνεύονται σωστά∙ " "μπορούν να εισαχθούν με ή χωρίς περιβάλλουσες παρενθέσεις, αν και συχνά οι " "παρενθέσεις είναι απαραίτητες ούτως ή άλλως (αν η πλειάδα είναι μέρος μιας " "μεγαλύτερης έκφρασης). Δεν είναι δυνατή η αντιστοίχιση σε μεμονωμένα " "στοιχεία μιας πλειάδας, ωστόσο είναι δυνατό να δημιουργηθούν πλειάδες " "(tuples) που περιέχουν μεταβλητά αντικείμενα, όπως λίστες." #: tutorial/datastructures.rst:406 msgid "" "Though tuples may seem similar to lists, they are often used in different " "situations and for different purposes. Tuples are :term:`immutable`, and " "usually contain a heterogeneous sequence of elements that are accessed via " "unpacking (see later in this section) or indexing (or even by attribute in " "the case of :func:`namedtuples `). Lists are :term:" "`mutable`, and their elements are usually homogeneous and are accessed by " "iterating over the list." msgstr "" "Αν και οι πλειάδες (tuples) μπορεί να φαίνονται παρόμοιες με λίστες, " "χρησιμοποιούνται συχνά σε διαφορετικές καταστάσεις και για διαφορετικούς " "σκοπούς. Οι πλειάδες (tuples) είναι :term:`immutable`, και συνήθως περιέχουν " "μια ετερογενή ακολουθία στοιχείων στα οποία η πρόσβαση γίνεται μέσω " "unpacking (δείτε παρακάτω σε αυτήν την ενότητα) ή το indexing (ή ακόμα και " "κατά χαρακτηριστικό στην περίπτωση :func:`namedtuples `). Οι λίστες είναι :term:`mutable`, και τα στοιχεία τους είναι " "συνήθως ομοιογενή και προσπελάζονται με επανάληψη στη λίστα." #: tutorial/datastructures.rst:414 msgid "" "A special problem is the construction of tuples containing 0 or 1 items: the " "syntax has some extra quirks to accommodate these. Empty tuples are " "constructed by an empty pair of parentheses; a tuple with one item is " "constructed by following a value with a comma (it is not sufficient to " "enclose a single value in parentheses). Ugly, but effective. For example::" msgstr "" "Ένα ειδικό πρόβλημα είναι η κατασκευή πλειάδων (tuples) που περιέχουν 0 ή 1 " "στοιχεία: η σύνταξη έχει κάποιες επιπλέον ιδιορρυθμίες για να τις " "προσαρμόσει. Οι κενές πλειάδες κατασκευάζονται από ένα κενό ζευγάρι " "παρενθέσεων, μια πλειάδα (tuple) με ένα στοιχείο δημιουργείται ακολουθώντας " "μια τιμή με κόμμα (δεν αρκεί να περικλείεται μια μόνο τιμή σε παρενθέσεις). " "Άσχημο, αλλά αποτελεσματικό. Για παράδειγμα::" #: tutorial/datastructures.rst:420 msgid "" ">>> empty = ()\n" ">>> singleton = 'hello', # <-- note trailing comma\n" ">>> len(empty)\n" "0\n" ">>> len(singleton)\n" "1\n" ">>> singleton\n" "('hello',)" msgstr "" ">>> empty = ()\n" ">>> singleton = 'hello', # <-- note trailing comma\n" ">>> len(empty)\n" "0\n" ">>> len(singleton)\n" "1\n" ">>> singleton\n" "('hello',)" #: tutorial/datastructures.rst:429 msgid "" "The statement ``t = 12345, 54321, 'hello!'`` is an example of *tuple " "packing*: the values ``12345``, ``54321`` and ``'hello!'`` are packed " "together in a tuple. The reverse operation is also possible::" msgstr "" "Η δήλωση ``t = 12345, 54321, 'hello!'`` είναι ένα παράδειγμα *tuple " "packing*: οι τιμές ``12345``, ``54321`` και ``'hello!'`` είναι συσκευασμένες " "μαζί σε μια πλειάδα (tuple). Η αντίστροφη λειτουργία είναι επίσης εφικτή::" #: tutorial/datastructures.rst:433 msgid ">>> x, y, z = t" msgstr ">>> x, y, z = t" #: tutorial/datastructures.rst:435 msgid "" "This is called, appropriately enough, *sequence unpacking* and works for any " "sequence on the right-hand side. Sequence unpacking requires that there are " "as many variables on the left side of the equals sign as there are elements " "in the sequence. Note that multiple assignment is really just a combination " "of tuple packing and sequence unpacking." msgstr "" "Αυτό ονομάζεται, αρκετά σωστά, *sequence unpacking* και λειτουργεί για " "οποιαδήποτε ακολουθία στη δεξιά πλευρά. Το sequence unpacking απαιτεί να " "υπάρχουν τόσες μεταβλητές στην αριστερή πλευρά του συμβόλου ισότητας όσα " "στοιχεία υπάρχουν στην ακολουθία. Σημείωση ότι η πολλαπλή ανάθεση είναι " "στην πραγματικότητα απλώς ένας συνδυασμός tuple packing και sequence " "unpacking." #: tutorial/datastructures.rst:445 msgid "Sets" msgstr "Σύνολα (Sets)" #: tutorial/datastructures.rst:447 msgid "" "Python also includes a data type for :ref:`sets `. A set is an " "unordered collection with no duplicate elements. Basic uses include " "membership testing and eliminating duplicate entries. Set objects also " "support mathematical operations like union, intersection, difference, and " "symmetric difference." msgstr "" "Η Python περιλαμβάνει επίσης έναν τύπο δεδομένων για :ref:`sets `. Ένα set είναι μια μη ταξινομημένη συλλογή χωρίς διπλότυπα στοιχεία. " "Οι βασικές χρήσεις περιλαμβάνουν τη δοκιμή ιδιότητας μέλους και την εξάλειψη " "διπλότυπων εγγραφών. Τα αντικείμενα συνόλου υποστηρίζουν επίσης μαθηματικές " "πράξεις όπως ένωση, τομή, διαφορά και συμμετρική διαφορά." #: tutorial/datastructures.rst:453 msgid "" "Curly braces or the :func:`set` function can be used to create sets. Note: " "to create an empty set you have to use ``set()``, not ``{}``; the latter " "creates an empty dictionary, a data structure that we discuss in the next " "section." msgstr "" "Τα άγκιστρα ή η συνάρτηση :func:`set` μπορούν να χρησιμοποιηθούν για τη " "δημιουργία συνόλων. Σημείωση: για να δημιουργήσετε ένα κενό σύνολο πρέπει " "να χρησιμοποιήσετε το ``set()``, όχι το ``{}`` ∙ το τελευταίο δημιουργεί ένα " "κενό λεξικό, μια δομή δεδομένων που θα συζητήσουμε στην επόμενη ενότητα." #: tutorial/datastructures.rst:457 msgid "Here is a brief demonstration::" msgstr "Ακολουθεί μια σύντομη επίδειξη::" #: tutorial/datastructures.rst:459 msgid "" ">>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}\n" ">>> print(basket) # show that duplicates have been " "removed\n" "{'orange', 'banana', 'pear', 'apple'}\n" ">>> 'orange' in basket # fast membership testing\n" "True\n" ">>> 'crabgrass' in basket\n" "False\n" "\n" ">>> # Demonstrate set operations on unique letters from two words\n" ">>>\n" ">>> a = set('abracadabra')\n" ">>> b = set('alacazam')\n" ">>> a # unique letters in a\n" "{'a', 'r', 'b', 'c', 'd'}\n" ">>> a - b # letters in a but not in b\n" "{'r', 'd', 'b'}\n" ">>> a | b # letters in a or b or both\n" "{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}\n" ">>> a & b # letters in both a and b\n" "{'a', 'c'}\n" ">>> a ^ b # letters in a or b but not both\n" "{'r', 'd', 'b', 'm', 'z', 'l'}" msgstr "" ">>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}\n" ">>> print(basket) # show that duplicates have been " "removed\n" "{'orange', 'banana', 'pear', 'apple'}\n" ">>> 'orange' in basket # fast membership testing\n" "True\n" ">>> 'crabgrass' in basket\n" "False\n" "\n" ">>> # Demonstrate set operations on unique letters from two words\n" ">>>\n" ">>> a = set('abracadabra')\n" ">>> b = set('alacazam')\n" ">>> a # unique letters in a\n" "{'a', 'r', 'b', 'c', 'd'}\n" ">>> a - b # letters in a but not in b\n" "{'r', 'd', 'b'}\n" ">>> a | b # letters in a or b or both\n" "{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}\n" ">>> a & b # letters in both a and b\n" "{'a', 'c'}\n" ">>> a ^ b # letters in a or b but not both\n" "{'r', 'd', 'b', 'm', 'z', 'l'}" #: tutorial/datastructures.rst:482 msgid "" "Similarly to :ref:`list comprehensions `, set comprehensions " "are also supported::" msgstr "" "Ομοίως με :ref:`list comprehensions `, υποστηρίζονται επίσης " "τα comprehensions των συνόλων::" #: tutorial/datastructures.rst:485 msgid "" ">>> a = {x for x in 'abracadabra' if x not in 'abc'}\n" ">>> a\n" "{'r', 'd'}" msgstr "" ">>> a = {x for x in 'abracadabra' if x not in 'abc'}\n" ">>> a\n" "{'r', 'd'}" #: tutorial/datastructures.rst:493 msgid "Dictionaries" msgstr "Λεξικά (Dictionaries)" #: tutorial/datastructures.rst:495 msgid "" "Another useful data type built into Python is the *dictionary* (see :ref:" "`typesmapping`). Dictionaries are sometimes found in other languages as " "\"associative memories\" or \"associative arrays\". Unlike sequences, which " "are indexed by a range of numbers, dictionaries are indexed by *keys*, which " "can be any immutable type; strings and numbers can always be keys. Tuples " "can be used as keys if they contain only strings, numbers, or tuples; if a " "tuple contains any mutable object either directly or indirectly, it cannot " "be used as a key. You can't use lists as keys, since lists can be modified " "in place using index assignments, slice assignments, or methods like :meth:" "`~list.append` and :meth:`~list.extend`." msgstr "" "Ένα άλλος χρήσιμος τύπος δεδομένων που είναι ενσωματωμένος στην Python είναι " "το *dictionary* (βλ. :ref:`typesmapping`). Τα λεξικά βρίσκονται μερικές " "φορές σε άλλες γλώσσες ως \"συσχετιστικές μνήμες\" ή \"συσχετιστικοί " "πίνακες\". Σε αντίθεση με τις ακολουθίες, οι οποίες είναι με indexes με ένα " "εύρος αριθμών, τα λεξικά γίνονται index με *keys*, που μπορεί να είναι " "οποιοσδήποτε αμετάβλητος τύπος∙ οι συμβολοσειρές και οι αριθμοί μπορούν " "πάντα να είναι κλειδιά. Οι πλειάδες (tuples) μπορούν να χρησιμοποιηθούν ως " "κλειδιά εάν περιέχουν μόνο συμβολοσειρές, αριθμούς ή πλειάδες (tuples)∙ εάν " "μια πλειάδα περιέχει οποιοδήποτε μεταβλητό αντικείμενο είτε άμεσα είτε " "έμμεσα, δεν μπορεί να χρησιμοποιηθεί ως κλειδί. Δεν μπορείτε να " "χρησιμοποιήσετε λίστες ως κλειδιά, καθώς οι λίστες μπορούν να τροποποιηθούν " "επιτόπου χρησιμοποιώντας αναθέσεις index, αναθέσεις slice, ή μεθόδους όπως :" "meth:`~list.append` και :meth:`~list.extend`." #: tutorial/datastructures.rst:506 msgid "" "It is best to think of a dictionary as a set of *key: value* pairs, with the " "requirement that the keys are unique (within one dictionary). A pair of " "braces creates an empty dictionary: ``{}``. Placing a comma-separated list " "of key:value pairs within the braces adds initial key:value pairs to the " "dictionary; this is also the way dictionaries are written on output." msgstr "" "Είναι καλύτερο να σκεφτείτε ένα λεξικό ως ένα σύνολο ζευγών *key: value*, με " "την προϋπόθεση ότι τα κλειδιά είναι μοναδικά (σε ένα λεξικό). Ένα ζεύγος " "αγκύλων δημιουργεί ένα κενό λεξικό: ``{}``. Η τοποθέτηση μιας λίστας ζευγών " "key:value στο λεξικό, αυτός είναι επίσης ο τρόπος με τον οποίο γράφονται τα " "λεξικά στην έξοδο." #: tutorial/datastructures.rst:512 msgid "" "The main operations on a dictionary are storing a value with some key and " "extracting the value given the key. It is also possible to delete a key:" "value pair with ``del``. If you store using a key that is already in use, " "the old value associated with that key is forgotten." msgstr "" "Οι κύριες λειτουργίες σε ένα λεξικό είναι η αποθήκευση μιας τιμής με κάποιο " "κλειδί και η εξαγωγή της τιμής που δίνεται στο κλειδί. Είναι επίσης δυνατή " "η διαγραφή ενός ζεύγους key:value με ``del``. Εάν αποθηκεύετε " "χρησιμοποιώντας ένα κλειδί που βρίσκεται ήδη σε χρήση, η παλιά τιμή που " "σχετίζεται με αυτό το κλειδί έχει ξεχαστεί." #: tutorial/datastructures.rst:517 msgid "" "Extracting a value for a non-existent key by subscripting (``d[key]``) " "raises a :exc:`KeyError`. To avoid getting this error when trying to access " "a possibly non-existent key, use the :meth:`~dict.get` method instead, which " "returns ``None`` (or a specified default value) if the key is not in the " "dictionary." msgstr "" "Η εξαγωγή μιας τιμής για ένα μη υπάρχον κλειδί με δεικτοδότηση (``d[key]``) " "προκαλεί ένα :exc:`KeyError`. Για να αποφύγετε αυτό το σφάλμα όταν " "προσπαθείτε να αποκτήσετε πρόσβαση σε ένα πιθανώς μη υπάρχον κλειδί, " "χρησιμοποιήστε αντίθετα τη μέθοδο :meth:`~dict.get`, η οποία επιστρέφει " "``None`` (ή μια καθορισμένη προεπιλεγμένη τιμή) εάν το κλειδί δεν βρίσκεται " "στο λεξικό." #: tutorial/datastructures.rst:522 msgid "" "Performing ``list(d)`` on a dictionary returns a list of all the keys used " "in the dictionary, in insertion order (if you want it sorted, just use " "``sorted(d)`` instead). To check whether a single key is in the dictionary, " "use the :keyword:`in` keyword." msgstr "" "Η εκτέλεση του ``list(d)`` σε ένα λεξικό επιστρέφει μια λίστα με όλα τα " "κλειδιά που χρησιμοποιούνται στο λεξικό, με σειρά εισαγωγής (αν θέλετε να " "ταξινομηθεί, απλώς χρησιμοποιήστε το ``sorted(d)``). Για να ελέγξετε εάν " "υπάρχει ένα μεμονωμένο κλειδί στο λεξικό, χρησιμοποιήστε τη λέξη-κλειδί :" "keyword:`in`." #: tutorial/datastructures.rst:527 msgid "Here is a small example using a dictionary::" msgstr "Ακολουθεί ένα μικρό παράδειγμα χρησιμοποιώντας ένα λεξικό::" #: tutorial/datastructures.rst:529 msgid "" ">>> tel = {'jack': 4098, 'sape': 4139}\n" ">>> tel['guido'] = 4127\n" ">>> tel\n" "{'jack': 4098, 'sape': 4139, 'guido': 4127}\n" ">>> tel['jack']\n" "4098\n" ">>> tel['irv']\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "KeyError: 'irv'\n" ">>> print(tel.get('irv'))\n" "None\n" ">>> del tel['sape']\n" ">>> tel['irv'] = 4127\n" ">>> tel\n" "{'jack': 4098, 'guido': 4127, 'irv': 4127}\n" ">>> list(tel)\n" "['jack', 'guido', 'irv']\n" ">>> sorted(tel)\n" "['guido', 'irv', 'jack']\n" ">>> 'guido' in tel\n" "True\n" ">>> 'jack' not in tel\n" "False" msgstr "" ">>> tel = {'jack': 4098, 'sape': 4139}\n" ">>> tel['guido'] = 4127\n" ">>> tel\n" "{'jack': 4098, 'sape': 4139, 'guido': 4127}\n" ">>> tel['jack']\n" "4098\n" ">>> tel['irv']\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "KeyError: 'irv'\n" ">>> print(tel.get('irv'))\n" "None\n" ">>> del tel['sape']\n" ">>> tel['irv'] = 4127\n" ">>> tel\n" "{'jack': 4098, 'guido': 4127, 'irv': 4127}\n" ">>> list(tel)\n" "['jack', 'guido', 'irv']\n" ">>> sorted(tel)\n" "['guido', 'irv', 'jack']\n" ">>> 'guido' in tel\n" "True\n" ">>> 'jack' not in tel\n" "False" #: tutorial/datastructures.rst:554 msgid "" "The :func:`dict` constructor builds dictionaries directly from sequences of " "key-value pairs::" msgstr "" "Ο constructor :func:`dict` δημιουργεί λεξικά απευθείας από ακολουθίες ζευγών " "key-value::" #: tutorial/datastructures.rst:557 msgid "" ">>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])\n" "{'sape': 4139, 'guido': 4127, 'jack': 4098}" msgstr "" ">>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])\n" "{'sape': 4139, 'guido': 4127, 'jack': 4098}" #: tutorial/datastructures.rst:560 msgid "" "In addition, dict comprehensions can be used to create dictionaries from " "arbitrary key and value expressions::" msgstr "" "Επιπλέον, τα comprehensions λεξικών μπορούν να χρησιμοποιηθούν για τη " "δημιουργία λεξικών από αυθαίρετες εκφράσεις κλειδιού και τιμών::" #: tutorial/datastructures.rst:563 msgid "" ">>> {x: x**2 for x in (2, 4, 6)}\n" "{2: 4, 4: 16, 6: 36}" msgstr "" ">>> {x: x**2 for x in (2, 4, 6)}\n" "{2: 4, 4: 16, 6: 36}" #: tutorial/datastructures.rst:566 msgid "" "When the keys are simple strings, it is sometimes easier to specify pairs " "using keyword arguments::" msgstr "" "Όταν τα κλειδιά είναι απλές συμβολοσειρές, μερικές φορές είναι πιο εύκολο να " "ορίσετε ζεύγη χρησιμοποιώντας ορίσματα λέξεων-κλειδιών::" #: tutorial/datastructures.rst:569 msgid "" ">>> dict(sape=4139, guido=4127, jack=4098)\n" "{'sape': 4139, 'guido': 4127, 'jack': 4098}" msgstr "" ">>> dict(sape=4139, guido=4127, jack=4098)\n" "{'sape': 4139, 'guido': 4127, 'jack': 4098}" #: tutorial/datastructures.rst:576 msgid "Looping Techniques" msgstr "Τεχνικές Looping" #: tutorial/datastructures.rst:578 msgid "" "When looping through dictionaries, the key and corresponding value can be " "retrieved at the same time using the :meth:`~dict.items` method. ::" msgstr "" "Κατά το looping μέσω λεξικών, το κλειδί και η αντίστοιχη τιμή μπορούν να " "ανακτηθούν ταυτόχρονα χρησιμοποιώντας τη μέθοδο :meth:`~dict.items`. ::" #: tutorial/datastructures.rst:581 msgid "" ">>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}\n" ">>> for k, v in knights.items():\n" "... print(k, v)\n" "...\n" "gallahad the pure\n" "robin the brave" msgstr "" ">>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}\n" ">>> for k, v in knights.items():\n" "... print(k, v)\n" "...\n" "gallahad the pure\n" "robin the brave" #: tutorial/datastructures.rst:588 msgid "" "When looping through a sequence, the position index and corresponding value " "can be retrieved at the same time using the :func:`enumerate` function. ::" msgstr "" "Κατά το looping μέσω ακολουθίας, ο δείκτης θέσης και η αντίστοιχη τιμή " "μπορούν να ανακτηθούν ταυτόχρονα χρησιμοποιώντας τη συνάρτηση :func:" "`enumerate`. ::" #: tutorial/datastructures.rst:591 msgid "" ">>> for i, v in enumerate(['tic', 'tac', 'toe']):\n" "... print(i, v)\n" "...\n" "0 tic\n" "1 tac\n" "2 toe" msgstr "" ">>> for i, v in enumerate(['tic', 'tac', 'toe']):\n" "... print(i, v)\n" "...\n" "0 tic\n" "1 tac\n" "2 toe" #: tutorial/datastructures.rst:598 msgid "" "To loop over two or more sequences at the same time, the entries can be " "paired with the :func:`zip` function. ::" msgstr "" "Για να κάνετε loop σε δύο ή περισσότερες ακολουθίες ταυτόχρονα, οι " "καταχωρίσεις μπορούν να αντιστοιχιστούν με τη συνάρτηση :func:`zip`. ::" #: tutorial/datastructures.rst:601 msgid "" ">>> questions = ['name', 'quest', 'favorite color']\n" ">>> answers = ['lancelot', 'the holy grail', 'blue']\n" ">>> for q, a in zip(questions, answers):\n" "... print('What is your {0}? It is {1}.'.format(q, a))\n" "...\n" "What is your name? It is lancelot.\n" "What is your quest? It is the holy grail.\n" "What is your favorite color? It is blue." msgstr "" ">>> questions = ['name', 'quest', 'favorite color']\n" ">>> answers = ['lancelot', 'the holy grail', 'blue']\n" ">>> for q, a in zip(questions, answers):\n" "... print('What is your {0}? It is {1}.'.format(q, a))\n" "...\n" "What is your name? It is lancelot.\n" "What is your quest? It is the holy grail.\n" "What is your favorite color? It is blue." #: tutorial/datastructures.rst:610 msgid "" "To loop over a sequence in reverse, first specify the sequence in a forward " "direction and then call the :func:`reversed` function. ::" msgstr "" "Για να κάνετε loop σε μια ακολουθία αντίστροφα, καθορίστε πρώτα την " "ακολουθία προς τα εμπρός και μετά καλέστε τη συνάρτηση :func:`reversed`. ::" #: tutorial/datastructures.rst:613 msgid "" ">>> for i in reversed(range(1, 10, 2)):\n" "... print(i)\n" "...\n" "9\n" "7\n" "5\n" "3\n" "1" msgstr "" ">>> for i in reversed(range(1, 10, 2)):\n" "... print(i)\n" "...\n" "9\n" "7\n" "5\n" "3\n" "1" #: tutorial/datastructures.rst:622 msgid "" "To loop over a sequence in sorted order, use the :func:`sorted` function " "which returns a new sorted list while leaving the source unaltered. ::" msgstr "" "Για να κάνετε loop σε μια ακολουθία με ταξινομημένη σειρά, χρησιμοποιήστε τη " "συνάρτηση :func:`sorted`, η οποία επιστρέφει μια νέα ταξινομημένη λίστα " "αφήνοντας την πηγή αναλλοίωτη. ::" #: tutorial/datastructures.rst:625 msgid "" ">>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']\n" ">>> for i in sorted(basket):\n" "... print(i)\n" "...\n" "apple\n" "apple\n" "banana\n" "orange\n" "orange\n" "pear" msgstr "" ">>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']\n" ">>> for i in sorted(basket):\n" "... print(i)\n" "...\n" "apple\n" "apple\n" "banana\n" "orange\n" "orange\n" "pear" #: tutorial/datastructures.rst:636 msgid "" "Using :func:`set` on a sequence eliminates duplicate elements. The use of :" "func:`sorted` in combination with :func:`set` over a sequence is an " "idiomatic way to loop over unique elements of the sequence in sorted " "order. ::" msgstr "" "Η χρήση του :func:`set` σε μια ακολουθία εξαλείφει τα διπλά στοιχεία. Η " "χρήση του :func:`sorted` σε συνδυασμό με το :func:`set` σε μια ακολουθία " "είναι ένας ιδιωματικός τρόπος για να κάνετε loop πάνω από μοναδικά στοιχεία " "της ακολουθίας σε ταξινομημένη σειρά. ::" #: tutorial/datastructures.rst:640 msgid "" ">>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']\n" ">>> for f in sorted(set(basket)):\n" "... print(f)\n" "...\n" "apple\n" "banana\n" "orange\n" "pear" msgstr "" ">>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']\n" ">>> for f in sorted(set(basket)):\n" "... print(f)\n" "...\n" "apple\n" "banana\n" "orange\n" "pear" #: tutorial/datastructures.rst:649 msgid "" "It is sometimes tempting to change a list while you are looping over it; " "however, it is often simpler and safer to create a new list instead. ::" msgstr "" "Μερικές φορές είναι δελεαστικό να αλλάζετε μια λίστα ενώ την περιηγείστε∙ " "ωστόσο, είναι συχνά πιο απλό και ασφαλές να δημιουργήσετε μια νέα λίστα. ::" #: tutorial/datastructures.rst:652 msgid "" ">>> import math\n" ">>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]\n" ">>> filtered_data = []\n" ">>> for value in raw_data:\n" "... if not math.isnan(value):\n" "... filtered_data.append(value)\n" "...\n" ">>> filtered_data\n" "[56.2, 51.7, 55.3, 52.5, 47.8]" msgstr "" ">>> import math\n" ">>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]\n" ">>> filtered_data = []\n" ">>> for value in raw_data:\n" "... if not math.isnan(value):\n" "... filtered_data.append(value)\n" "...\n" ">>> filtered_data\n" "[56.2, 51.7, 55.3, 52.5, 47.8]" #: tutorial/datastructures.rst:666 msgid "More on Conditions" msgstr "Περισσότερα για τις συνθήκες" #: tutorial/datastructures.rst:668 msgid "" "The conditions used in ``while`` and ``if`` statements can contain any " "operators, not just comparisons." msgstr "" "Οι συνθήκες που χρησιμοποιούνται στις δηλώσεις ``while`` και ``if`` μπορούν " "να περιέχουν οποιουσδήποτε τελεστές, όχι μόνο συγκρίσεις." #: tutorial/datastructures.rst:672 msgid "" "The comparison operators ``in`` and ``not in`` are membership tests that " "determine whether a value is in (or not in) a container. The operators " "``is`` and ``is not`` compare whether two objects are really the same " "object. All comparison operators have the same priority, which is lower " "than that of all numerical operators." msgstr "" "Οι τελεστές σύγκρισης ``in`` και ``not in`` είναι δοκιμές ιδιότητας μέλους " "που καθορίζουν εάν μια τιμή βρίσκεται (ή όχι σε) ένα container. Οι τελεστές " "``is`` και ``is not`` συγκρίνουν εάν δύο αντικείμενα είναι πραγματικά το " "ίδιο αντικείμενο. Όλοι οι τελεστές σύγκρισης έχουν την ίδια προτεραιότητα, " "η οποία είναι χαμηλότερη από αυτή όλων των αριθμητικών τελεστών." #: tutorial/datastructures.rst:678 msgid "" "Comparisons can be chained. For example, ``a < b == c`` tests whether ``a`` " "is less than ``b`` and moreover ``b`` equals ``c``." msgstr "" "Οι συγκρίσεις μπορούν να είναι αλυσιδωτές. Για παράδειγμα, ``a < b == c`` " "ελέγχει εάν το ``a`` είναι μικρότερο από ``b`` και επιπλέον το ``b`` ισούται " "με ``c``." #: tutorial/datastructures.rst:681 msgid "" "Comparisons may be combined using the Boolean operators ``and`` and ``or``, " "and the outcome of a comparison (or of any other Boolean expression) may be " "negated with ``not``. These have lower priorities than comparison " "operators; between them, ``not`` has the highest priority and ``or`` the " "lowest, so that ``A and not B or C`` is equivalent to ``(A and (not B)) or " "C``. As always, parentheses can be used to express the desired composition." msgstr "" "Οι συγκρίσεις μπορούν να συνδυαστούν χρησιμοποιώντας τους λογικούς τελεστές " "``and`` και ``or``, και το αποτέλεσμα μιας σύγκρισης (ή οποιασδήποτε άλλης " "λογικής έκφρασης) μπορεί να ακυρωθεί με ``not``. Αυτοί έχουν χαμηλότερες " "προτεραιότητες μεταξύ των τελεστών σύγκρισης, το ``not`` έχει την υψηλότερη " "προτεραιότητα και το ``or`` τη χαμηλότερη, έτσι ώστε το ``A and not B or C`` " "ισοδυναμεί με ``(A and (not B)) or C``. Όπως πάντα, οι παρενθέσεις μπορούν " "να χρησιμοποιηθούν για να εκφράσουν την επιθυμητή σύνθεση." #: tutorial/datastructures.rst:688 msgid "" "The Boolean operators ``and`` and ``or`` are so-called *short-circuit* " "operators: their arguments are evaluated from left to right, and evaluation " "stops as soon as the outcome is determined. For example, if ``A`` and ``C`` " "are true but ``B`` is false, ``A and B and C`` does not evaluate the " "expression ``C``. When used as a general value and not as a Boolean, the " "return value of a short-circuit operator is the last evaluated argument." msgstr "" "Οι λογικοί τελεστές ``and`` και ``or`` είναι οι λεγόμενοι τελεστές *short-" "circuit*: τα ορίσματα τους αξιολογούνται από αριστερά προς τα δεξιά και η " "αξιολόγηση σταματά μόλις καθοριστεί το αποτέλεσμα. Για παράδειγμα, εάν το " "``A`` and ``C`` είναι αληθές, αλλά το ``B`` είναι ψευδές, το ``A and B and " "C`` δεν αξιολογεί την έκφραση ``C``. Όταν χρησιμοποιείται ως γενική τιμή " "και όχι ως λογική, η τιμή επιστροφής ενός short-circuit τελεστή είναι το " "τελευταίο αξιολογημένο όρισμα." #: tutorial/datastructures.rst:695 msgid "" "It is possible to assign the result of a comparison or other Boolean " "expression to a variable. For example, ::" msgstr "" "Είναι δυνατό να αντιστοιχίσετε το αποτέλεσμα μιας σύγκρισης ή άλλη δυαδική " "έκφρασης σε μια μεταβλητή. Για παράδειγμα, ::" #: tutorial/datastructures.rst:698 msgid "" ">>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'\n" ">>> non_null = string1 or string2 or string3\n" ">>> non_null\n" "'Trondheim'" msgstr "" ">>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'\n" ">>> non_null = string1 or string2 or string3\n" ">>> non_null\n" "'Trondheim'" #: tutorial/datastructures.rst:703 msgid "" "Note that in Python, unlike C, assignment inside expressions must be done " "explicitly with the :ref:`walrus operator ` ``:=``. This avoids a common class of problems encountered " "in C programs: typing ``=`` in an expression when ``==`` was intended." msgstr "" "Σημειώστε ότι στην Python, σε αντίθεση με την C, η ανάθεση εντός των " "εκφράσεων πρέπει να γίνεται ρητά με τον τελεστή :ref:`walrus operator ` ``:=``. Αυτό αποφεύγει μια " "κοινή κατηγορία προβλημάτων που συναντώνται στα προγράμματα C: " "πληκτρολογώντας ``=`` σε μια έκφραση όταν προοριζόταν το ``==``." #: tutorial/datastructures.rst:713 msgid "Comparing Sequences and Other Types" msgstr "Σύγκριση ακολουθιών και άλλων τύπων" #: tutorial/datastructures.rst:714 msgid "" "Sequence objects typically may be compared to other objects with the same " "sequence type. The comparison uses *lexicographical* ordering: first the " "first two items are compared, and if they differ this determines the outcome " "of the comparison; if they are equal, the next two items are compared, and " "so on, until either sequence is exhausted. If two items to be compared are " "themselves sequences of the same type, the lexicographical comparison is " "carried out recursively. If all items of two sequences compare equal, the " "sequences are considered equal. If one sequence is an initial sub-sequence " "of the other, the shorter sequence is the smaller (lesser) one. " "Lexicographical ordering for strings uses the Unicode code point number to " "order individual characters. Some examples of comparisons between sequences " "of the same type::" msgstr "" "Τα αντικείμενα ακολουθίας μπορούν συνήθως να συγκριθούν με άλλα αντικείμενα " "με τον ίδιο τύπο ακολουθίας. Η σύγκριση χρησιμοποιεί *lexicographical* " "σειρά: πρώτα συγκρίνονται τα δύο πρώτα στοιχεία και αν διαφέρουν αυτό " "καθορίζει το αποτέλεσμα της σύγκρισης∙ εάν είναι ίσα, τα επόμενα δύο " "στοιχεία συγκρίνονται και ούτω καθεξής, έως ότου εξαντληθεί η μία από τις " "δύο ακολουθίες. Εάν δύο στοιχεία προς σύγκριση είναι τα ίδια ακολουθίες του " "ίδιου τύπου, η λεξικογραφική σύγκριση πραγματοποιείται αναδρομικά. Εάν όλα " "τα στοιχεία δύο ακολουθιών συγκρίνονται ίσα, οι ακολουθίες θεωρούνται ίσες. " "Εάν η μια ακολουθία είναι αρχική υποακολουθία της άλλης, η μικρότερη " "ακολουθία είναι η μικρότερη (ελάχιστη). Η λεξικογραφική ταξινόμηση " "συμβολοσειρών χρησιμοποιεί τον αριθμό κωδικού σημείου Unicode για να " "ταξινομήσει μεμονωμένους χαρακτήρες. Μερικά παραδείγματα συγκρίσεων μεταξύ " "ακολουθιών του ίδιου τύπου::" #: tutorial/datastructures.rst:726 msgid "" "(1, 2, 3) < (1, 2, 4)\n" "[1, 2, 3] < [1, 2, 4]\n" "'ABC' < 'C' < 'Pascal' < 'Python'\n" "(1, 2, 3, 4) < (1, 2, 4)\n" "(1, 2) < (1, 2, -1)\n" "(1, 2, 3) == (1.0, 2.0, 3.0)\n" "(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)" msgstr "" "(1, 2, 3) < (1, 2, 4)\n" "[1, 2, 3] < [1, 2, 4]\n" "'ABC' < 'C' < 'Pascal' < 'Python'\n" "(1, 2, 3, 4) < (1, 2, 4)\n" "(1, 2) < (1, 2, -1)\n" "(1, 2, 3) == (1.0, 2.0, 3.0)\n" "(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)" #: tutorial/datastructures.rst:734 msgid "" "Note that comparing objects of different types with ``<`` or ``>`` is legal " "provided that the objects have appropriate comparison methods. For example, " "mixed numeric types are compared according to their numeric value, so 0 " "equals 0.0, etc. Otherwise, rather than providing an arbitrary ordering, " "the interpreter will raise a :exc:`TypeError` exception." msgstr "" "Λάβετε υπόψη ότι η σύγκριση αντικειμένων διαφορετικών τύπων με ``<`` ή ``>`` " "είναι νόμιμη υπό τον όρο ότι τα αντικείμενα διαθέτουν κατάλληλες μεθόδους " "σύγκρισης. Για παράδειγμα, οι μικτές αριθμητικοί τύποι συγκρίνονται σύμφωνα " "με την αριθμητική τους τιμή, οπότε το 0 ισούται με 0.0, κλπ. Διαφορετικά, " "αντί να παρέχει μια αυθαίρετη παραγγελία, ο διερμηνέας θα κάνει raise μια " "εξαίρεση :exc:`TypeError`." #: tutorial/datastructures.rst:742 msgid "Footnotes" msgstr "Υποσημειώσεις" #: tutorial/datastructures.rst:743 msgid "" "Other languages may return the mutated object, which allows method chaining, " "such as ``d->insert(\"a\")->remove(\"b\")->sort();``." msgstr "" "Άλλες γλώσσες ενδέχεται να επιστρέψουν το μεταλλαγμένο αντικείμενο, το οποίο " "επιτρέπει την αλυσιδωτή εκτέλεση μεθόδων, όπως ``d->insert(\"a\")-" ">remove(\"b\")->sort();``."
X Tutup