expertenaustausch > comp.lang.* > comp.lang.python

Patrick Frank (02.12.2019, 21:20)
Hallo,

das Buch "Think Python" habe ich nur bis zum Kapitel zur Objekt Orientierten Programmierung gelesen, weil ich möglichst schnell an dem Kurs auf training.talkpython.fm teilnehmen wollte. Nun fiel mir dort bei dem Thema "named tuples" auf, dass ich den Sinn bzw. die bevorzugte Verwendung von Tuples gar nicht verstanden habe.

Könnte das bitte jemand mit einem anschaulichen Beispiel erklären?

Vielen Dank!

P.
Rainer Fischbach (02.12.2019, 22:50)
Hallo Patrick

der Vorzug von Tupeln besteht vor allem darin, dass sie immutable Objekte sind, d. h. dass man sie auch als Keys in Dictionaries verwenden oder in Sets stecken kann. Das ist im realen Leben oft sehr hilfreich.

Gruß

Rainer Fischbach
__________________________________________________ ____

ECS
Engineering Consulting & Solutions GmbH
Ingolstädter Straße 47
92318 Neumarkt
DEUTSCHLAND

Tel.: +49 (0)9181 - 4764-84
Fax: +49 (0)9181 - 4764-50
Mobil: +49 (0)171 - 4141570
E-Mail: fischbach(at)ecs-gmbh.de
Web:
__________________________________________________ ____

Engineering Consulting & Solutions GmbH
Sitz der Gesellschaft: Neumarkt i.d.OPf.
Geschäftsführer: Wolfgang Dietzler, Björn Dietzler
Eingetragen im Handelsregister Nürnberg unter HRB: 13998
USt.-IDNr. gemäß § 27a Umsatzsteuergesetz: DE 181055415

Hinweis zur Vertraulichkeit:

Die in dieser E-Mail enthaltenen Informationen sind vertraulich zu behandeln und nur für den/die dort genannten Empfänger bestimmt. Die Vertraulichkeit ist unter Berücksichtigung der einschlägigen Gesetze, insbesondere BDSG, durch den/die Empfänger sicherzustellen. Sofern Sie nicht der beabsichtigte Empfänger sind, ist das Speichern, die Weiterleitung oder das Kopieren dieser E-Mail strikt untersagt. Haben Sie diese Nachricht irrtümlicherweise erhalten, benachrichtigen Sie uns bitte umgehend und löschen das Dokument.

________________________________________
Von: python-de [python-de-bounces+fischbach=ecs-gmbh.de]"im Auftrag von "Patrick Frank [patrick.frank.042]
Gesendet: Montag, 2. Dezember 2019 20:20
An: python-de
Betreff: [Python-de] (named) Tuples und ihre Verwendung

Hallo,

das Buch "Think Python" habe ich nur bis zum Kapitel zur Objekt Orientierten Programmierung gelesen, weil ich möglichst schnell an dem Kurs auf training.talkpython.fm teilnehmen wollte. Nun fiel mir dort bei dem Thema "named tuples" auf, dass ich den Sinn bzw. die bevorzugte Verwendung von Tuples gar nicht verstanden habe.

Könnte das bitte jemand mit einem anschaulichen Beispiel erklären?

Vielen Dank!

P.
_______________________________________________
python-de maillist - python-de
Stefan Ram (16.12.2019, 13:15)
Patrick Frank <patrick.frank.042> writes:
>amed tuples" auf, dass ich den Sinn bzw. die bevorzugte Verwendung von
>Tuples gar nicht verstanden habe.
>Könnte das bitte jemand mit einem anschaulichen Beispiel erklären?


Ich habe gerade eben erst vor drei Minuten eine tupelwertige
Ausdrucksliste in ein Python-Skript eingefügt. Also wäre
dies ein konkretes Beispiel! Hier der Auschnitt aus meinem
Skript (noch ungetestet!):

for resolution in '720', '480', '360':

Ich wollte einen bestimmten Programmteil drei mal durchlaufen:
Der gewöhnliche Bezeichner »resolution« sollte dabei zuerst
an «'720'», dann an «'480'» und schließlich an «'360'» gebunden sein.

Dabei habe ich die tupelwertige Ausdrucksliste »'720', '480', '360'«
verwendet.

OT: Eine allgemeine Erklärung der Bedeutung des Wortes "Tupel"
in der Mathematik:

Niko Wenselowski (16.12.2019, 15:38)
Hi Patrick,

wie schon erläutert sind tuples erstmal immutable Aufzählungen.
Zur Anwendung kommen tuples oftmals dann, wenn die Daten nicht verändert
werden können / sollen.

Named tuples machen die Verwendung von Tuples einfacher, weil man zur
Adressierung der Elemente darin anstatt mittels Zugriff per Index diese
direkt wie ein Attribut ansprechen kann.
Das erleichtert erstmal das Code-Verständnis, kann aber auch eine
sinnvolle Grundlage sein, falls man später den Code mal umbauen will
(bspw. zur Verwendung von eigenen Klassen oder wenn das Python aktuell
genug ist mittels dataclasses).

Hier ist mal ein kleines Beispiel zur Arbeit mit named tuples:

from collections import namedtuple
from datetime import date

Contract = namedtuple("Contract", "nr customer expiration_date")

data = [Contract("A123", "Hans AG", date(2020, 1, 30)),
Contract("A124", "Hubert UH", date(2020, 2, 16)),
Contract("A125", "Wurst GmbH", date(2019, 12, 31))]

for contract in data:
print("Contract #%s with %s expires on %s" % contract)
if contract.expiration_date < date(2020, 1, 1):
print("ATTENTION: Contract %s will expire this year!" %
contract.nr)

Viele Grüße

Niko
Ähnliche Themen