Seite 1 von 2
set als array ?
Verfasst: Sonntag 13. Dezember 2020, 17:53
von reinerdoll
hallo,
ich benötige eine minimale array-funktion, einfach nur mit index zugreifbare elemente.
deshalb verzichte ich auf numpy.
wenn ich das grob mit einem set mache :
a = {}
a[9]=3
a[2]=3
a[1]=a[2]+a[9]
print (a[1])
tut das eigentlich alles, was ich brauche.
klar ist das kein array, aber mehr brauche ich nicht, der index funktioniert.
die definition ist einfacher als bei ner liste.
spricht was dagegen ? (bitte nicht steinigen

Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 17:55
von __deets__
Da geht aber eine Menge durcheinander. Weder ist das ein Set, noch ein Array. Was du da hast ist ein Dictionary bzw. Woerterbuch, und das ist einer wenn nicht der zentralste aller Python Datenstrukturen.
Nichts spricht dagegen, den zu benutzen.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:03
von reinerdoll
Ok, den Unterschied set/Menge zu Dictionary hab ich wohl nicht so recht kapiert.
Ich kann das nutzen wie ein Array, solange ich nur die Funktion brauche, Elemente per Index anzusprechen (in Schleifen z.b.) ?
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:05
von noisefloor
Hallo,
und wenn es ein Set wäre würde der Index-Zugriff nicht funktionieren, weil Sets das nicht unterstützen.
Ein array ist in Python eine eigene Datenstruktur, die im `array` Modul untergebracht ist. Braucht man in Python auch eher selten, da man normalerweise mit Listen oder zum Rechnen mit numpy-Arrays arbeitet.
Gruß, noisefloor
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:07
von noisefloor
Nachtrag:
Elemente per Index anzusprechen (in Schleifen z.b.) ?
Kann man mit Listen, ist aber in Python in der Regel ein Anit-Pattern, weil man in Python direkt über Listen iterieren kann, ohne Index-Zugriff.
Gruß, noisefloor
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:08
von Sirius3
Ob etwas dagegen spricht, hängt davon ab, was Du damit machen möchtest.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:12
von reinerdoll
Ich brauche keine Matrixmultiplikation oder solche Dinge, also kein wirkliches array.
Ich möchte nur mit Indizes auf Werte (int/float) zugreifen können, um komfortabel z.b. Sortieraufgaben zu lösen.
Sowohl im Dictionary als auch in der Liste scheitn das ja zu funktionieren, bei der Liste ist die Definition umständlicher wenn sie mehr Elemente hat.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:16
von Sirius3
Normalerweise macht man etwas falsch, wenn man direkten Zugriff auf einen Index braucht.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:47
von reinerdoll
Das versteh ich nicht.
Wenn ich jetzt z.b einen Sortierklassiker schreib, sagen wir bubblesort oder so, dann muß ich zwei Werte vergleichen, also irgendwie :
oder so ähnlich.
Was ist daran falsch ?
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 18:57
von __deets__
Das du den schreibst, statt den eingebauten sort zu nutzen.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:01
von sparrow
Und selbst, wenn man das zu Übungszwecken selbst schreibt, würde man in dem Fall eien Liste nehmen - und kein Wörterbuch um die Index-Zugriffe auf eine Liste zu imitieren.
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:03
von reinerdoll
na ja, es geht darum, programmieren zu lernen, und nicht tolle Funktionen anzuwenden.
man muß erst mal verstehen, was ein Index ist, und Schleifen schreiben und so weiter und so weiter ....
Aber für mich wichtiger : warum hier eine Liste und kein Dictionary, wenns doch den Zweck erfüllt ?
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:07
von sparrow
Warum etwas umständlich in ein dictionary packen, nur um die Funktionalität abzubilden, die essentiell für Listen ist?
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:13
von reinerdoll
Nun, wenn ich die Werte erst einlesen möchte, ist das Dictionary eher praktischer (weil die Definition kürzer ist).
Aber ich seh schon : es tut was ich will, und kann als Werkzeug für Spiele mit Indizes verwendet werden.
Danke für eure Geduld mit meinen "Milchmädchenfragen" !
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:21
von Sirius3
Wie willst Du denn die Werte einlesen? Normalerweise hat man ja die in einer Reihenfolge und nicht beliebig.
Ich frage mich auch, warum Du so sehr lernen willst, wie man mit Indizes arbeitet, wenn das in Python unüblich ist?
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:26
von noisefloor
Hallo,
was du "Index" nennst, ist der Schlüssel (auf englisch: key) deines Dictionaries. Und Bubblesort für eine Dict machen ist auch Quatsch, weil man auf Dicts mittels Schlüssel zugreift. Mal abgesehen davon, das Dicts erst ab Python 3.7 die Einfügereihenfolge behalten.
Am besten liest du im Python-Tutorial nochmal gründlich den Teil zu Datentypen und -strukturen. Ohne, dass die Listen, Dict & Co verstanden hast, kannst du nie vernünftig in Python programmieren.
Gruß, noisefloor
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:29
von reinerdoll
Es geht nicht darum, Python zu lernen.
Es geht darum, einen Einstieg in die Entwicklung einfachster Algorithmen zu machen. Also grundsätzliche Dinge wie das Verständnis (oder die Übung), ob man eine Schleife oder eine bedingte Ausführung braucht. Oder eben, was ein Index ist. Ein Beispiel für typische Aufgaben : eine Iteration nach einer Nullstelle.
Python nur, weil in dem Kontext in dem ich mich bewege, Python eben sehr angesagt ist.
Und auf dem Einsteiger-Niveau ist es doch praktisch egal, welche Sprache ...
Aber wie gesagt : ich danke euch für den Crash-Einsteig in Listen, Dictoinaries und co, und natürlich werde ich nachlesen !
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:53
von noisefloor
Hallo,
deine Einstellung ist falsch. Wenn du Sprache mit Sprache $FOO progammierst und dessen Ideome ignorierst, programmierst du gegen die Sprache $FOO . Und das ist halt falsch und die lernst falsch.
Klar funktionieren Algorithmen wie Bubble Sort mit allen Programmiersprache - aber WIE du das umsetzt ist halt unter Python anders als unter C als unter Go als unter JavaScript als unter ...
Gruß, noisefloor
Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 19:55
von sparrow
@reinerdoll: Die Programmiersprache ist schon wichtig - denn du versuchst gegen sie zu progammieren. In die Richtung gingen auch schon andere Beiträge von dir. Auf diese Weise hat man leider selten Erfolg. Der Trick besteht darin, die Werkzeuge zu verstehen, die man benutzt. Aber da du ja sehr genau weißt, was du willst: Viel Erfolg

Re: set als array ?
Verfasst: Sonntag 13. Dezember 2020, 20:08
von __deets__
Ich sehe das jetzt anders als meine Vorredner, es ist schon ok, wenn man zum lernen eines Algorithmus den selbst umsetzt.
Wo ich mich aber mit Nachdruck anschliesse ist die Wahl der Datenstruktur. Ein Woerterbuch IST KEIN ARRAY bzw. allgemeiner Sequenz. Das waere in Python standardmaessig die Liste, und die solltest du auch dringend benutzen.