Hi,
sorry wenn das jetzt ganz daneben ist ... aber ich bastle schon seit Tagen und bekomme keine Loesung gebacken ..
Ich moechte gern eine Datenstruktur wie Schueler.name, Schueler.alter ... in einen Vektor stopfen, so dass ich auf mehrere Schueler in diesem Konstrukt so ungefaehr mit
Schueler[1].name = "Mueller"
Schueler[1].alter = 14
Schueler[2].name = "Maier" ...
zugreifen kann. Wer hilft mir auf die Spruenge?
Danke
struct - Daten
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Schau mal hier: http://www.python-forum.de/viewtopic.php?p=27354#27354 

Da bietet sich eine liste mit mappings an ....
also :
also :
Code: Alles auswählen
mylist = []
a = {"name" : "Meier"}
b = {"name" : "Muster"}
mylist.append(a)
mylist.append(b)
print mylist[1].get("name")
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
Hi,
danke euch erst mal. Nun habe ich aber das Problem, das eines meiner Elemente ein Array ist, dass offensichtlich als Referenz an die Liste übergeben wird - was eigentlich nicht so sein sollte.
und nun steht nicht wie erwartet
[1,2,3],[1,2,99]
da sondern
[1,2,99],[1,2,99]
Was muß ich tun, damit der Wert und keine Referenz übergeben wird.
Danke und schönen Sonntag
danke euch erst mal. Nun habe ich aber das Problem, das eines meiner Elemente ein Array ist, dass offensichtlich als Referenz an die Liste übergeben wird - was eigentlich nicht so sein sollte.
Code: Alles auswählen
list=[]
element=array([1,2,3])
list.append(element)
element[2]=99
list.append(element)
print list
[1,2,3],[1,2,99]
da sondern
[1,2,99],[1,2,99]
Was muß ich tun, damit der Wert und keine Referenz übergeben wird.
Danke und schönen Sonntag
-
- User
- Beiträge: 52
- Registriert: Dienstag 21. September 2004, 06:58
- Wohnort: Adelzhausen
- Kontaktdaten:
Hi,
warum machst Du keine Klasse draus?
gruss
Sebastian
warum machst Du keine Klasse draus?
Code: Alles auswählen
class Person:
def __init__(self, name, alter):
self.name = name
self.alter = alter
# liste von schuelern
schueler = []
schueler.append(Person("Walter Mustermann", 5))
schueler.append(Person("ein name", 9))
for s in schueler:
print s.name
Sebastian
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
yapp, Du hast recht ... zudem auch besser lesbar.
Danke
Danke
Das liegt nicht am Array, sondern daran das in Python nur Referenzen auf Objekte zugewiesen werden. Egal um welchen Objekt-Typ es sich handelt. Wenn man ein neues Objekt, also eine Kopie haben möchte, dann muss man dafür schon selbst sorgen.Poseidonius hat geschrieben:danke euch erst mal. Nun habe ich aber das Problem, das eines meiner Elemente ein Array ist, dass offensichtlich als Referenz an die Liste übergeben wird - was eigentlich nicht so sein sollte.
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
Ok, und wie stelle ich das an?
Ich habe eine Klasse angelegt
und lege Instanzen davon in einer Liste ab
dann bekomme ich fuer die Abfrage
die Fehlermeldung
Danke Euch
Ich habe eine Klasse angelegt
Code: Alles auswählen
from scipy import *
class calculations:
def __init__(self,Matrix):
self.Matrix=Matrix
Code: Alles auswählen
Steps=[]
x=array([1,2,3,4])
Steps.append(calculations(x[:].copy)
Code: Alles auswählen
Steps[-1].Matrix
Also habe ich die Idee des .copy falsch verstanden, wer kann mir helfen?build-in method copy of array object
Danke Euch
Das ist keine Fehlermeldung. So sieht eine Methode aus wenn man sie ausgibt. Du möchtest aber nicht die Methode an die Liste anhängen, sondern das Ergebnis eines Aufrufs dieser Methode. Für einen Aufruf brauchts immer Klammern. Also ``print foo.method`` gibt die Methode aus, ``print foo.method()`` ruft die Methode auf und gibt das Ergebnis aus.Poseidonius hat geschrieben:dann bekomme ich fuer die AbfrageCode: Alles auswählen
Steps=[] x=array([1,2,3,4]) Steps.append(calculations(x[:].copy)
die FehlermeldungCode: Alles auswählen
Steps[-1].Matrix
build-in method copy of array object
Wobei ich mich frage ob ``x[:]`` nicht schon ausreicht um eine Kopie zu erzeugen. Allerdings würde ich ``x.copy()`` bevorzugen weil dann deutlicher ist, was da passiert. Aber das ist Geschmackssache.
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
Vielen Dank, der Hinweis hat mir weitergeholfen, nun verstehe ich auch was mein Buch mir zu diesem Thema copy und copy() sagen moechte.
Gruesse
Poseidonius
Gruesse
Poseidonius