# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001 Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
# Translators:
# python-doc bot, 2025
#
msgid ""
msgstr ""
"Project-Id-Version: Python 3.14\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-05 16:53+0200\n"
"PO-Revision-Date: 2025-09-16 00:02+0000\n"
"Last-Translator: python-doc bot, 2025\n"
"Language-Team: German (https://app.transifex.com/python-doc/teams/5390/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../../tutorial/datastructures.rst:5
msgid "Data Structures"
msgstr "Datenstrukturen"
#: ../../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 ""
"In diesem Kapitel werden einige Dinge, die du bereits kennengelernt hast, "
"nher erlutert, und es werden zudem einige neue Aspekte hinzugefgt."
#: ../../tutorial/datastructures.rst:13
msgid "More on Lists"
msgstr "Mehr zum Thema Listen"
#: ../../tutorial/datastructures.rst:15
msgid ""
"The :ref:`list ` data type has some more methods. Here are "
"all of the methods of list objects:"
msgstr ""
"Der Datentyp :ref:`list ` verfgt ber einige weitere "
"Methoden. Hier sind alle Methoden von Listenobjekten aufgefhrt:"
#: ../../tutorial/datastructures.rst:21
msgid "Add an item to the end of the list. Similar to ``a[len(a):] = [x]``."
msgstr ""
"Fge einen Eintrag am Ende der Liste hinzu. hnlich wie bei ``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 ""
"Erweitere die Liste, indem du alle Elemente aus der iterierbaren Struktur "
"anhngst. hnlich wie bei ``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 ""
"Fgt ein Element an einer bestimmten Position ein. Das erste Argument ist "
"der Index des Elements, vor dem eingefgt werden soll. Daher fgt ``a."
"insert(0, x)`` am Anfang der Liste ein, und ``a.insert(len(a), x)`` "
"entspricht ``a.append(x)``."
#: ../../tutorial/datastructures.rst:42
msgid ""
"Remove the first item from the list whose value is equal to *value*. It "
"raises a :exc:`ValueError` if there is no such item."
msgstr ""
"Entferne das erste Element aus der Liste, dessen Wert *value* entspricht. "
"Wenn kein solches Element vorhanden ist, wird eine :exc:`ValueError` "
"ausgelst."
#: ../../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 ""
"Entfernt das Element an der angegebenen Position aus der Liste und gibt es "
"zurck. Wenn kein Index angegeben wird, entfernt ``a.pop()`` das letzte "
"Element der Liste und gibt es zurck. Es lst eine :exc:`IndexError` aus, "
"wenn die Liste leer ist oder der Index auerhalb des Listenbereichs liegt."
#: ../../tutorial/datastructures.rst:58
msgid "Remove all items from the list. Similar to ``del a[:]``."
msgstr "Entferne alle Elemente aus der Liste. hnlich wie bei ``del a[:]`` ."
#: ../../tutorial/datastructures.rst:64
msgid ""
"Return zero-based index of the first occurrence of *value* in the list. "
"Raises a :exc:`ValueError` if there is no such item."
msgstr ""
"Gibt den nullbasierten Index des ersten Vorkommens von *value* in der Liste "
"zurck. Lst eine Ausnahme vom Typ :exc:`ValueError` aus, wenn kein "
"entsprechendes Element vorhanden ist."
#: ../../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 ""
"Die optionalen Argumente *start* und *end* werden wie in der Slice-Notation "
"interpretiert und dienen dazu, die Suche auf eine bestimmte Teilfolge der "
"Liste zu beschrnken. Der zurckgegebene Index wird relativ zum Anfang der "
"vollstndigen Folge und nicht relativ zum Argument *start* berechnet."
#: ../../tutorial/datastructures.rst:76
msgid "Return the number of times *value* appears in the list."
msgstr "Gibt die Anzahl der Vorkommen von *value* in der Liste zurck."
#: ../../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 ""
"Sortiere die Elemente der Liste an Ort und Stelle (die Argumente knnen zur "
"Anpassung der Sortierung verwendet werden; eine Erluterung findest du "
"unter :func:`sorted` )."
#: ../../tutorial/datastructures.rst:89
msgid "Reverse the elements of the list in place."
msgstr ""
"Die Elemente der Liste an Ort und Stelle in umgekehrter Reihenfolge anordnen."
#: ../../tutorial/datastructures.rst:95
msgid "Return a shallow copy of the list. Similar to ``a[:]``."
msgstr "Gibt eine flache Kopie der Liste zurck. hnlich wie bei ``a[:]`` ."
#: ../../tutorial/datastructures.rst:98
msgid "An example that uses most of the list methods::"
msgstr "Ein Beispiel, das die meisten Methoden der Liste verwendet::"
#: ../../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) # Die nchste Banane ab Position 4 finden\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 ""
"Vielleicht ist dir aufgefallen, dass bei Methoden wie ``insert``, ``remove`` "
"oder ``sort``, die lediglich die Liste verndern, kein Rckgabewert "
"ausgegeben wird sie geben den Standardwert ``None`` zurck. [#]_ Dies ist "
"ein Entwurfsprinzip fr alle vernderbaren Datenstrukturen in 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 ""
"Auerdem wird dir vielleicht auffallen, dass nicht alle Daten sortiert oder "
"verglichen werden knnen. So lsst sich beispielsweise ``[None, 'hello', "
"10]`` nicht sortieren, da Ganzzahlen nicht mit Zeichenketten verglichen "
"werden knnen und ``None`` nicht mit anderen Typen verglichen werden kann. "
"Zudem gibt es einige Typen, fr die keine definierte Ordnungsrelation "
"existiert. So ist beispielsweise ``3+4j < 5+7j`` kein gltiger Vergleich."
#: ../../tutorial/datastructures.rst:137
msgid "Using Lists as Stacks"
msgstr "Listen als Stapel verwenden"
#: ../../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 ""
"Die Listenmethoden machen es sehr einfach, eine Liste als Stapel zu "
"verwenden, bei dem das zuletzt hinzugefgte Element als erstes wieder "
"abgerufen wird (\"Last-in, First-out\"). Um ein Element oben auf den Stapel "
"zu setzen, verwende :meth:`~list.append`. Um ein Element von der Spitze des "
"Stapels abzurufen, verwende :meth:`~list.pop` ohne expliziten Index. "
"Beispiel::"
#: ../../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 "Listen als Warteschlangen verwenden"
#: ../../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). See :ref:"
"`time-complexity` for more information."
msgstr ""
"Es ist auch mglich, eine Liste als Warteschlange zu verwenden, bei der das "
"zuerst hinzugefgte Element als erstes wieder abgerufen wird (\"First-in, "
"First-out\"); allerdings sind Listen fr diesen Zweck nicht effizient. "
"Whrend das Anhngen und Entnehmen am Ende einer Liste schnell erfolgt, ist "
"das Einfgen oder Entnehmen am Anfang einer Liste langsam (da alle anderen "
"Elemente um eine Position verschoben werden mssen). Weitere Informationen "
"findest du unter :ref:`time-complexity`."
#: ../../tutorial/datastructures.rst:178
msgid ""
"To implement a queue, use :class:`collections.deque` which was designed to "
"have fast appends and pops from both ends. For example::"
msgstr ""
"Um eine Warteschlange zu implementieren, verwende :class:`collections."
"deque`, das fr schnelles Hinzufgen und Entnehmen von beiden Enden "
"ausgelegt ist. Beispiel::"
#: ../../tutorial/datastructures.rst:181
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 kommt an\n"
">>> queue.append(\"Graham\") # Graham kommt an\n"
">>> queue.popleft() # Der Erste, der angekommen ist, "
"verlsst nun die Warteschlange\n"
"'Eric'\n"
">>> queue.popleft() # Der Zweite, der angekommen ist, "
"verlsst nun die Warteschlange\n"
"'John'\n"
">>> queue # Verbleibende Warteschlange in der "
"Reihenfolge der Ankunft\n"
"deque(['Michael', 'Terry', 'Graham'])"
#: ../../tutorial/datastructures.rst:196
msgid "List Comprehensions"
msgstr "Listen-Abstraktion"
#: ../../tutorial/datastructures.rst:198
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 ""
"Listen-Abstraktion bieten eine prgnante Mglichkeit, Listen zu erstellen. "
"Hufige Anwendungsflle sind die Erstellung neuer Listen, bei denen jedes "
"Element das Ergebnis bestimmter Operationen ist, die auf jedes Element einer "
"anderen Sequenz oder eines anderen iterierbaren Objekts angewendet werden, "
"oder die Erstellung einer Teilsequenz aus den Elementen, die eine bestimmte "
"Bedingung erfllen."
#: ../../tutorial/datastructures.rst:203
msgid "For example, assume we want to create a list of squares, like::"
msgstr ""
"Nehmen wir zum Beispiel an, wir mchten eine Liste von Quadraten erstellen, "
"etwa wie folgt:"
#: ../../tutorial/datastructures.rst:205
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:212
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 ""
"Beachte, dass dadurch eine Variable namens ``x`` angelegt (oder "
"berschrieben) wird, die auch nach Abschluss der Schleife noch vorhanden "
"ist. Wir knnen die Liste der Quadrate ohne Nebenwirkungen wie folgt "
"berechnen:"
#: ../../tutorial/datastructures.rst:216
msgid "squares = list(map(lambda x: x**2, range(10)))"
msgstr "Quadrate = list(map(lambda x: x**2, range(10)))"
#: ../../tutorial/datastructures.rst:218
msgid "or, equivalently::"
msgstr "oder, gleichbedeutend::"
#: ../../tutorial/datastructures.rst:220
msgid "squares = [x**2 for x in range(10)]"
msgstr "Quadrate = [x**2 for x in range(10)]"
#: ../../tutorial/datastructures.rst:222
msgid "which is more concise and readable."
msgstr "was prgnanter und besser lesbar ist."
#: ../../tutorial/datastructures.rst:224
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 ""
"Eine Listenkomprimierung besteht aus Klammern, die einen Ausdruck enthalten, "
"gefolgt von einer :keyword:`!for`-Klausel und anschlieend null oder mehr :"
"keyword:`!for`- oder :keyword:`!if`-Klauseln. Das Ergebnis ist eine neue "
"Liste, die sich aus der Auswertung des Ausdrucks im Kontext der darauf "
"folgenden :keyword:`!for`- und :keyword:`!if`-Klauseln ergibt. Diese "
"Listenkomprimierung kombiniert beispielsweise die Elemente zweier Listen, "
"sofern sie nicht identisch sind:"
#: ../../tutorial/datastructures.rst:231
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:234
msgid "and it's equivalent to::"
msgstr "und das entspricht::"
#: ../../tutorial/datastructures.rst:236
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:245
msgid ""
"Note how the order of the :keyword:`for` and :keyword:`if` statements is the "
"same in both these snippets."
msgstr ""
"Beachte, dass die Reihenfolge der Anweisungen :keyword:`for` und :keyword:"
"`if` in beiden Codeausschnitten identisch ist."
#: ../../tutorial/datastructures.rst:248
msgid ""
"If the expression is a tuple (e.g. the ``(x, y)`` in the previous example), "
"it must be parenthesized. ::"
msgstr ""
"Wenn es sich bei dem Ausdruck um ein Tupel handelt (z. B. ``(x, y)`` im "
"vorherigen Beispiel), muss es in Klammern gesetzt werden. ::"
#: ../../tutorial/datastructures.rst:251
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"
">>> # Erstelle eine neue Liste, in der die Werte verdoppelt sind\n"
">>> [x*2 for x in vec]\n"
"[-8, -4, 0, 4, 8]\n"
">>> # Filtere die Liste, um negative Zahlen auszuschlieen\n"
">>> [x for x in vec if x >= 0]\n"
"[0, 2, 4]\n"
">>> # Eine Funktion auf alle Elemente anwenden\n"
">>> [abs(x) for x in vec]\n"
"[4, 2, 0, 2, 4]\n"
">>> # Eine Methode auf jedes Element anwenden\n"
">>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']\n"
">>> [weapon.strip() for weapon in freshfruit]\n"
"['banana', 'loganberry', 'passion fruit']\n"
">>> # Eine Liste von 2-Tupeln wie (Zahl, Quadrat) erstellen\n"
">>> [(x, x**2) for x in range(6)]\n"
"[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]\n"
">>> # Das Tupel muss in Klammern gesetzt werden, sonst wird ein Fehler "
"ausgelst\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"
">>> # Eine Liste mithilfe einer List Comprehension mit zwei \"for\"-"
"Schleifen abflachen\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:279
msgid ""
"List comprehensions can contain complex expressions and nested functions::"
msgstr ""
"Listen-Abstraktionen knnen komplexe Ausdrcke und verschachtelte Funktionen "
"enthalten::"
#: ../../tutorial/datastructures.rst:281
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:286
msgid "Nested List Comprehensions"
msgstr "Verschachtelte Listen-Abstraktion"
#: ../../tutorial/datastructures.rst:288
msgid ""
"The initial expression in a list comprehension can be any arbitrary "
"expression, including another list comprehension."
msgstr ""
"Der erste Ausdruck in einer Listen-Abstraktion kann ein beliebiger Ausdruck "
"sein, einschlielich einer weiteren Listen-Abstraktion."
#: ../../tutorial/datastructures.rst:291
msgid ""
"Consider the following example of a 3x4 matrix implemented as a list of 3 "
"lists of length 4::"
msgstr ""
"Betrachte das folgende Beispiel einer 34-Matrix, die als Liste aus drei "
"Listen der Lnge 4 implementiert ist::"
#: ../../tutorial/datastructures.rst:294
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:300
msgid "The following list comprehension will transpose rows and columns::"
msgstr "Die folgende Listen-Abstraktion transponiert Zeilen und Spalten::"
#: ../../tutorial/datastructures.rst:302
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:305
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 ""
"Wie wir im vorigen Abschnitt gesehen haben, wird die innere Listenauswertung "
"im Kontext des darauf folgenden :keyword:`for` ausgewertet, sodass dieses "
"Beispiel gleichbedeutend ist mit::"
#: ../../tutorial/datastructures.rst:309
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:316
msgid "which, in turn, is the same as::"
msgstr "was wiederum dasselbe ist wie::"
#: ../../tutorial/datastructures.rst:318
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"
"... # Die folgenden 3 Zeilen implementieren die verschachtelte "
"Listenkomposition\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:329
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 ""
"In der Praxis solltest du integrierte Funktionen komplexen Ablaufanweisungen "
"vorziehen. Die Funktion :func:`zip` eignet sich hervorragend fr diesen "
"Anwendungsfall:"
#: ../../tutorial/datastructures.rst:332
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:335
msgid ""
"See :ref:`tut-unpacking-arguments` for details on the asterisk in this line."
msgstr ""
"Weitere Informationen zum Sternchen in dieser Zeile findest du unter :ref:"
"`tut-unpacking-arguments`."
#: ../../tutorial/datastructures.rst:340
msgid "The :keyword:`!del` statement"
msgstr "Die Erklrung der :keyword:`!del`"
#: ../../tutorial/datastructures.rst:342
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 ""
"Es gibt eine Mglichkeit, ein Element anhand seines Indexes statt seines "
"Wertes aus einer Liste zu entfernen: die Anweisung :keyword:`del`. Diese "
"unterscheidet sich von der Methode :meth:`~list.pop`, die einen Wert "
"zurckgibt. Die Anweisung :keyword:`!del` kann auch verwendet werden, um "
"Teilmengen aus einer Liste zu entfernen oder die gesamte Liste zu leeren "
"(was wir zuvor durch die Zuweisung einer leeren Liste zur Teilmenge getan "
"haben). Zum Beispiel::"
#: ../../tutorial/datastructures.rst:348
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:359
msgid ":keyword:`del` can also be used to delete entire variables::"
msgstr ""
":keyword:`del` kann auch zum Lschen ganzer Variablen verwendet werden::"
#: ../../tutorial/datastructures.rst:361
msgid ">>> del a"
msgstr ">>> del a"
#: ../../tutorial/datastructures.rst:363
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 ""
"Der Verweis auf den Namen ``a`` ist hier ein Fehler (zumindest solange, bis "
"ihm ein anderer Wert zugewiesen wird). Wir werden spter noch weitere "
"Verwendungsmglichkeiten fr :keyword:`del` finden."
#: ../../tutorial/datastructures.rst:370
msgid "Tuples and Sequences"
msgstr "Tupel und Sequenzen"
#: ../../tutorial/datastructures.rst:372
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 ""
"Wir haben gesehen, dass Listen und Zeichenketten viele gemeinsame "
"Eigenschaften haben, wie beispielsweise Indizierungs- und "
"Ausschnittoperationen. Sie sind zwei Beispiele fr *Sequenz*-Datentypen "
"(siehe :ref:`typesseq`). Da Python eine sich weiterentwickelnde Sprache ist, "
"knnen weitere Sequenz-Datentypen hinzukommen. Es gibt auerdem einen "
"weiteren standardmigen Sequenz-Datentyp: das *Tupel*."
#: ../../tutorial/datastructures.rst:378
msgid ""
"A tuple consists of a number of values separated by commas, for instance::"
msgstr ""
"Ein Tupel besteht aus einer Reihe von Werten, die durch Kommas getrennt "
"sind, zum Beispiel::"
#: ../../tutorial/datastructures.rst:380
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"
">>> # Tupel knnen verschachtelt sein:\n"
">>> u = t, (1, 2, 3, 4, 5)\n"
">>> u\n"
"((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))\n"
">>> # Tupel sind unvernderlich:\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"
">>> # knnen jedoch vernderbare Objekte enthalten:\n"
">>> v = ([1, 2, 3], [3, 2, 1])\n"
">>> v\n"
"([1, 2, 3], [3, 2, 1])"
#: ../../tutorial/datastructures.rst:400
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 ""
"Wie du siehst, werden Tupel in der Ausgabe immer in Klammern gesetzt, damit "
"verschachtelte Tupel korrekt interpretiert werden; sie knnen mit oder ohne "
"umschlieende Klammern eingegeben werden, obwohl Klammern oft ohnehin "
"erforderlich sind (wenn das Tupel Teil eines greren Ausdrucks ist). Es "
"ist nicht mglich, den einzelnen Elementen eines Tupels Werte zuzuweisen; es "
"ist jedoch mglich, Tupel zu erstellen, die vernderbare Objekte wie "
"beispielsweise Listen enthalten."
#: ../../tutorial/datastructures.rst:407
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 ""
"Auch wenn Tupel auf den ersten Blick Listen hneln mgen, werden sie oft in "
"anderen Situationen und fr andere Zwecke verwendet. Tupel sind :term:"
"`unvernderlich ` und enthalten in der Regel eine heterogene "
"Folge von Elementen, auf die ber Entpacken (siehe weiter unten in diesem "
"Abschnitt) oder Indizierung (oder im Fall von :func:`namedtuples "
"` sogar ber Attribute) zugegriffen wird. Listen "
"sind :term:`vernderlich `, und ihre Elemente sind in der Regel "
"homogen; der Zugriff erfolgt durch Iteration ber die Liste."
#: ../../tutorial/datastructures.rst:415
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 ""
"Ein besonderes Problem stellt die Bildung von Tupeln dar, die 0 oder 1 "
"Element enthalten: Die Syntax weist hierfr einige zustzliche "
"Besonderheiten auf. Leere Tupel werden durch ein leeres Klammerpaar "
"gebildet; ein Tupel mit einem Element wird gebildet, indem man einem Wert "
"ein Komma nachsetzt (es reicht nicht aus, einen einzelnen Wert in Klammern "
"zu setzen). Unschn, aber effektiv. Zum Beispiel::"
#: ../../tutorial/datastructures.rst:421
msgid ""
">>> empty = ()\n"
">>> singleton = 'hello', # >> len(empty)\n"
"0\n"
">>> len(singleton)\n"
"1\n"
">>> singleton\n"
"('hello',)"
msgstr ""
">>> empty = ()\n"
">>> singleton = 'hello', # >> len(empty)\n"
"0\n"
">>> len(singleton)\n"
"1\n"
">>> singleton\n"
"('hello',)"
#: ../../tutorial/datastructures.rst:430
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 ""
"Die Anweisung ``t = 12345, 54321, 'hello!'`` ist ein Beispiel fr *Tupel-"
"Packing*: Die Werte ``12345``, ``54321`` und ``'hello!'`` werden in einem "
"Tupel zusammengefasst. Auch die umgekehrte Operation ist mglich::"
#: ../../tutorial/datastructures.rst:434
msgid ">>> x, y, z = t"
msgstr ">>> x, y, z = t"
#: ../../tutorial/datastructures.rst:436
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 ""
"Dies wird passenderweise als *Sequenz-Entpackung* bezeichnet und "
"funktioniert fr jede beliebige Sequenz auf der rechten Seite. Fr die "
"Sequenz-Entpackung muss die Anzahl der Variablen auf der linken Seite des "
"Gleichheitszeichens der Anzahl der Elemente in der Sequenz entsprechen. "
"Beachte, dass die Mehrfachzuweisung im Grunde nur eine Kombination aus Tupel-"
"Packing und Sequenz-Unpacking ist."
#: ../../tutorial/datastructures.rst:446
msgid "Sets"
msgstr "Sets"
#: ../../tutorial/datastructures.rst:448
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 enthlt auerdem einen Datentyp fr :ref:`Mengen `. Eine "
"Menge ist eine ungeordnete Sammlung ohne doppelte Elemente. Zu den "
"grundlegenden Anwendungsbereichen gehren die berprfung der Zugehrigkeit "
"zu einer Menge und das Entfernen doppelter Eintrge. Mengenobjekte "
"untersttzen zudem mathematische Operationen wie Vereinigung, Schnittmenge, "
"Differenz und symmetrische Differenz."
#: ../../tutorial/datastructures.rst:454
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 ""
"Zum Erstellen von Mengen knnen geschweifte Klammern oder die Funktion :func:"
"`set` verwendet werden. Hinweis: Um eine leere Menge zu erstellen, mssen "
"Sie ``set()`` verwenden, nicht ``{}``; Letzteres erstellt ein leeres "
"Wrterbuch, eine Datenstruktur, die wir im nchsten Abschnitt behandeln."
#: ../../tutorial/datastructures.rst:458
msgid ""
"Because sets are unordered, iterating over them or printing them can produce "
"the elements in a different order than you expect."
msgstr ""
"Da Mengen ungeordnet sind, kann es beim Durchlaufen oder Ausgeben der "
"Elemente vorkommen, dass diese in einer anderen Reihenfolge angezeigt "
"werden, als erwartet."
#: ../../tutorial/datastructures.rst:461
msgid "Here is a brief demonstration::"
msgstr "Hier eine kurze Demonstration:"
#: ../../tutorial/datastructures.rst:463
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) # zeigt, dass Duplikate entfernt "
"wurden\n"
"{'orange', 'banana', 'pear', 'apple'}\n"
">>> 'orange' in basket # schnelle Zugehrigkeitsprfung\n"
"True\n"
">>> 'crabgrass' in basket\n"
"False\n"
"\n"
">>> # Demonstration von Mengenoperationen mit eindeutigen Buchstaben aus "
"zwei Wrtern\n"
">>>\n"
">>> a = set('abracadabra')\n"
">>> b = set('alacazam')\n"
">>> a # eindeutige Buchstaben in a\n"
"{'a', 'r', 'b', 'c', 'd'}\n"
">>> a - b # Buchstaben in a, die nicht in b "
"vorkommen\n"
"{'r', 'd', 'b'}\n"
">>> a | b # Buchstaben in a oder b oder in "
"beiden\n"
"{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}\n"
">>> a & b # Buchstaben, die sowohl in a als "
"auch in b vorkommen\n"
"{'a', 'c'}\n"
">>> a ^ b # Buchstaben, die entweder in a oder "
"in b vorkommen, aber nicht in beiden\n"
"{'r', 'd', 'b', 'm', 'z', 'l'}"
#: ../../tutorial/datastructures.rst:486
msgid ""
"Similarly to :ref:`list comprehensions `, set comprehensions "
"are also supported::"
msgstr ""
"hnlich wie bei den :ref:`Listenkomprimierungen ` werden auch "
"Mengekomprimierungen untersttzt::"
#: ../../tutorial/datastructures.rst:489
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:497
msgid "Dictionaries"
msgstr "Wrterbcher"
#: ../../tutorial/datastructures.rst:499
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 ""
"Ein weiterer ntzlicher, in Python integrierter Datentyp ist das "
"*Wrterbuch* (siehe :ref:`typesmapping`). Wrterbcher werden in anderen "
"Sprachen manchmal als \"assoziative Speicher\" oder \"assoziative Arrays\" "
"bezeichnet. Im Gegensatz zu Sequenzen, die durch einen Zahlenbereich "
"indiziert werden, werden Dictionaries durch *Schlssel* indiziert, die von "
"jedem unvernderlichen Typ sein knnen; Zeichenketten und Zahlen knnen "
"immer als Schlssel verwendet werden. Tupel knnen als Schlssel verwendet "
"werden, wenn sie ausschlielich Zeichenketten, Zahlen oder Tupel enthalten; "
"enthlt ein Tupel direkt oder indirekt ein vernderbliches Objekt, kann es "
"nicht als Schlssel verwendet werden. Listen knnen nicht als Schlssel "
"verwendet werden, da sie durch Indexzuweisungen, Slice-Zuweisungen oder "
"Methoden wie :meth:`~list.append` und :meth:`~list.extend` an Ort und Stelle "
"verndert werden knnen."
#: ../../tutorial/datastructures.rst:510
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 ""
"Man kann sich ein Wrterbuch am besten als eine Menge von *Schlssel:Wert*-"
"Paaren vorstellen, wobei die Schlssel (innerhalb eines Wrterbuchs) "
"eindeutig sein mssen. Ein Paar geschweifter Klammern erstellt ein leeres "
"Wrterbuch: ``{}``. Durch Einfgen einer durch Kommas getrennten Liste von "
"Schlssel:Wert-Paaren innerhalb der geschweiften Klammern werden dem "
"Wrterbuch anfngliche Schlssel:Wert-Paare hinzugefgt; auf diese Weise "
"werden Wrterbcher auch bei der Ausgabe dargestellt."
#: ../../tutorial/datastructures.rst:516
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 ""
"Die wichtigsten Operationen in einem Wrterbuch sind das Speichern eines "
"Werts unter einem bestimmten Schlssel und das Abrufen des Werts anhand des "
"Schlssels. Es ist auerdem mglich, ein Schlssel-Wert-Paar mit ``del`` zu "
"lschen. Wenn du einen Wert unter einem Schlssel speicherst, der bereits "
"verwendet wird, wird der alte, diesem Schlssel zugeordnete Wert verworfen."
#: ../../tutorial/datastructures.rst:521
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 ""
"Der Versuch, einen Wert fr einen nicht vorhandenen Schlssel mittels "
"Indexierung abzurufen (``d[key]``), lst einen :exc:`KeyError` aus. Um "
"diesen Fehler beim Zugriff auf einen mglicherweise nicht vorhandenen "
"Schlssel zu vermeiden, verwende stattdessen die Methode :meth:`~dict.get`, "
"die ``None`` (oder einen angegebenen Standardwert) zurckgibt, wenn der "
"Schlssel nicht im Wrterbuch enthalten ist."
#: ../../tutorial/datastructures.rst:526
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 ""
"Wendet man ``list(d)`` auf ein Wrterbuch an, wird eine Liste aller im "
"Wrterbuch verwendeten Schlssel in der Reihenfolge ihrer Einfgung "
"zurckgegeben (wenn du die Liste sortiert haben mchtest, verwende "
"stattdessen einfach ``sorted(d)``). Um zu prfen, ob ein einzelner Schlssel "
"im Wrterbuch enthalten ist, verwende das Schlsselwort :keyword:`in` ."
#: ../../tutorial/datastructures.rst:531
msgid "Here is a small example using a dictionary::"
msgstr "Hier ist ein kleines Beispiel, bei dem ein Wrterbuch verwendet wird::"
#: ../../tutorial/datastructures.rst:533
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:558
msgid ""
"The :func:`dict` constructor builds dictionaries directly from sequences of "
"key-value pairs::"
msgstr ""
"Der Konstruktor :func:`dict` erstellt Wrterbcher direkt aus Sequenzen von "
"Schlssel-Wert-Paaren::"
#: ../../tutorial/datastructures.rst:561
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:564
msgid ""
"In addition, dict comprehensions can be used to create dictionaries from "
"arbitrary key and value expressions::"
msgstr ""
"Darber hinaus knnen Dict-Comprehensions verwendet werden, um Wrterbcher "
"aus beliebigen Schlssel- und Wert-Ausdrcken zu erstellen::"
#: ../../tutorial/datastructures.rst:567
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:570
msgid ""
"When the keys are simple strings, it is sometimes easier to specify pairs "
"using keyword arguments::"
msgstr ""
"Wenn es sich bei den Schlsseln um einfache Zeichenfolgen handelt, ist es "
"manchmal einfacher, Paare mithilfe von Schlsselwortargumenten anzugeben::"
#: ../../tutorial/datastructures.rst:573
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:580
msgid "Looping Techniques"
msgstr "Schleifentechniken"
#: ../../tutorial/datastructures.rst:582
msgid ""
"When looping through dictionaries, the key and corresponding value can be "
"retrieved at the same time using the :meth:`~dict.items` method. ::"
msgstr ""
"Beim Durchlaufen von Wrterbchern knnen der Schlssel und der zugehrige "
"Wert mithilfe der Methode :meth:`~dict.items` gleichzeitig abgerufen "
"werden. ::"
#: ../../tutorial/datastructures.rst:585
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:592
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 ""
"Beim Durchlaufen einer Sequenz knnen der Positionsindex und der zugehrige "
"Wert mithilfe der Funktion :func:`enumerate` gleichzeitig abgerufen "
"werden. ::"
#: ../../tutorial/datastructures.rst:595
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:602
msgid ""
"To loop over two or more sequences at the same time, the entries can be "
"paired with the :func:`zip` function. ::"
msgstr ""
"Um zwei oder mehr Sequenzen gleichzeitig zu durchlaufen, knnen die Eintrge "
"mit der Funktion :func:`zip` gepaart werden. ::"
#: ../../tutorial/datastructures.rst:605
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:614
msgid ""
"To loop over a sequence in reverse, first specify the sequence in a forward "
"direction and then call the :func:`reversed` function. ::"
msgstr ""
"Um eine Folge in umgekehrter Reihenfolge zu durchlaufen, gib zunchst die "
"Folge in Vorwrtsrichtung an und rufe anschlieend die Funktion :func:"
"`reversed` auf. ::"
#: ../../tutorial/datastructures.rst:617
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:626
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 ""
"Um eine Folge in sortierter Reihenfolge zu durchlaufen, verwende die "
"Funktion :func:`sorted`, die eine neue sortierte Liste zurckgibt, whrend "
"die Quelle unverndert bleibt. ::"
#: ../../tutorial/datastructures.rst:629
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:640
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 ""
"Die Anwendung von :func:`set` auf eine Sequenz entfernt doppelte Elemente. "
"Die Verwendung von :func:`sorted` in Kombination mit :func:`set` auf eine "
"Sequenz ist eine gngige Methode, um die eindeutigen Elemente der Sequenz in "
"sortierter Reihenfolge durchzugehen. ::"
#: ../../tutorial/datastructures.rst:644
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:653
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 ""
"Manchmal ist es verlockend, eine Liste zu ndern, whrend man sie in einer "
"Schleife durchluft; oft ist es jedoch einfacher und sicherer, stattdessen "
"eine neue Liste zu erstellen. ::"
#: ../../tutorial/datastructures.rst:656
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:670
msgid "More on Conditions"
msgstr "Mehr zu den Bedingungen"
#: ../../tutorial/datastructures.rst:672
msgid ""
"The conditions used in ``while`` and ``if`` statements can contain any "
"operators, not just comparisons."
msgstr ""
"Die in den Anweisungen ``while`` und ``if`` verwendeten Bedingungen knnen "
"beliebige Operatoren enthalten, nicht nur Vergleichsoperatoren."
#: ../../tutorial/datastructures.rst:676
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 ""
"Die Vergleichsoperatoren ``in`` und ``not in`` sind Zugehrigkeitsprfungen, "
"die feststellen, ob ein Wert in einem Container enthalten ist (oder nicht). "
"Die Operatoren ``is`` und ``is not`` vergleichen, ob zwei Objekte "
"tatschlich dasselbe Objekt sind. Alle Vergleichsoperatoren haben dieselbe "
"Prioritt, die niedriger ist als die aller numerischen Operatoren."
#: ../../tutorial/datastructures.rst:682
msgid ""
"Comparisons can be chained. For example, ``a < b == c`` tests whether ``a`` "
"is less than ``b`` and moreover ``b`` equals ``c``."
msgstr ""
"Vergleiche knnen verkettet werden. Beispielsweise prft ``a < b == c``, ob "
"``a`` kleiner ist als ``b`` und ob darber hinaus ``b`` gleich ``c`` ist."
#: ../../tutorial/datastructures.rst:685
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 ""
"Vergleiche knnen mithilfe der Booleschen Operatoren ``and`` und ``or`` "
"kombiniert werden, und das Ergebnis eines Vergleichs (oder eines beliebigen "
"anderen Booleschen Ausdrucks) kann mit ``not`` negiert werden. Diese haben "
"eine niedrigere Prioritt als Vergleichsoperatoren; unter ihnen hat ``not`` "
"die hchste Prioritt und ``or`` die niedrigste, sodass ``A and not B or C`` "
"gleichbedeutend ist mit ``(A and (not B)) or C``. Wie immer knnen Klammern "
"verwendet werden, um die gewnschte Zusammensetzung auszudrcken."
#: ../../tutorial/datastructures.rst:692
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 ""
"Die Booleschen Operatoren ``and`` und ``or`` sind sogenannte *Kurzschluss*-"
"Operatoren: Deine Argumente werden von links nach rechts ausgewertet, und "
"die Auswertung wird beendet, sobald das Ergebnis feststeht. Sind "
"beispielsweise ``A`` und ``C`` wahr, ``B`` jedoch falsch, so wertet ``A and "
"B and C`` den Ausdruck ``C`` nicht aus. Wird ein Kurzschlussoperator als "
"allgemeiner Wert und nicht als Boolescher Wert verwendet, ist der "
"Rckgabewert das zuletzt ausgewertete Argument."
#: ../../tutorial/datastructures.rst:699
msgid ""
"It is possible to assign the result of a comparison or other Boolean "
"expression to a variable. For example, ::"
msgstr ""
"Es ist mglich, das Ergebnis eines Vergleichs oder eines anderen booleschen "
"Ausdrucks einer Variablen zuzuweisen. Beispiel: ::"
#: ../../tutorial/datastructures.rst:702
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:707
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 ""
"Beachte dass in Python anders als in C Zuweisungen innerhalb von "
"Ausdrcken explizit mit dem :ref:`Walross-Operator ` ``:=`` erfolgen mssen. Dadurch wird eine "
"hufige Problemklasse vermieden, die in C-Programmen auftritt: die Eingabe "
"von ``=`` in einem Ausdruck, obwohl eigentlich ``==`` gemeint war."
#: ../../tutorial/datastructures.rst:717
msgid "Comparing Sequences and Other Types"
msgstr "Vergleich von Sequenzen und anderen Typen"
#: ../../tutorial/datastructures.rst:718
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 ""
"Sequenzobjekte knnen in der Regel mit anderen Objekten desselben "
"Sequenztyps verglichen werden. Der Vergleich erfolgt nach *lexikografischer* "
"Reihenfolge: Zunchst werden die ersten beiden Elemente verglichen; "
"unterscheiden sie sich, bestimmt dies das Ergebnis des Vergleichs; sind sie "
"gleich, werden die nchsten beiden Elemente verglichen und so weiter, bis "
"eine der beiden Sequenzen erschpft ist. Sind zwei zu vergleichende Elemente "
"selbst Sequenzen desselben Typs, wird der lexikografische Vergleich rekursiv "
"durchgefhrt. Sind alle Elemente zweier Sequenzen gleich, gelten die "
"Sequenzen als gleich. Ist eine Sequenz eine anfngliche Teilsequenz der "
"anderen, ist die krzere Sequenz die kleinere (geringere). Bei der "
"lexikografischen Sortierung von Zeichenketten wird die Unicode-"
"Codepunktnummer zur Sortierung einzelner Zeichen verwendet. Einige Beispiele "
"fr Vergleiche zwischen Sequenzen desselben Typs:"
#: ../../tutorial/datastructures.rst:730
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:738
msgid ""
"Note that comparing objects of different types with ```` 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 ""
"Beachte, dass der Vergleich von Objekten unterschiedlicher Typen mit ```` zulssig ist, sofern die Objekte ber entsprechende "
"Vergleichsmethoden verfgen. Beispielsweise werden gemischte numerische "
"Typen anhand ihres numerischen Werts verglichen, sodass 0 gleich 0,0 ist "
"usw. Andernfalls liefert der Interpreter keine willkrliche Reihenfolge, "
"sondern lst eine :exc:`TypeError`-Ausnahme aus."
#: ../../tutorial/datastructures.rst:746
msgid "Footnotes"
msgstr "Funoten"
#: ../../tutorial/datastructures.rst:747
msgid ""
"Other languages may return the mutated object, which allows method chaining, "
"such as ``d->insert(\"a\")->remove(\"b\")->sort();``."
msgstr ""
"Andere Sprachen geben mglicherweise das genderte Objekt zurck, was eine "
"Methodenverkettung ermglicht, wie beispielsweise ``d->insert(\"a\")-"
">remove(\"b\")->sort();``."
#~ 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 ""
#~ "Es ist auch mglich, eine Liste als Warteschlange zu verwenden, bei der "
#~ "das zuerst hinzugefgte Element als erstes wieder abgerufen wird (\"First-"
#~ "in, First-out\"); allerdings sind Listen fr diesen Zweck nicht "
#~ "effizient. Whrend das Anhngen und Entnehmen am Ende einer Liste schnell "
#~ "erfolgt, ist das Einfgen oder Entnehmen am Anfang einer Liste langsam "
#~ "(da alle anderen Elemente um eine Position verschoben werden mssen)."