Seite 1 von 1
struct - Daten
Verfasst: Donnerstag 9. Februar 2006, 15:04
von Poseidonius
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
Verfasst: Donnerstag 9. Februar 2006, 15:35
von jens
Verfasst: Donnerstag 9. Februar 2006, 16:09
von Mad-Marty
Da bietet sich eine liste mit mappings an ....
also :
Code: Alles auswählen
mylist = []
a = {"name" : "Meier"}
b = {"name" : "Muster"}
mylist.append(a)
mylist.append(b)
print mylist[1].get("name")
Arrays in Listen
Verfasst: Sonntag 12. Februar 2006, 13:22
von Poseidonius
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.
Code: Alles auswählen
list=[]
element=array([1,2,3])
list.append(element)
element[2]=99
list.append(element)
print list
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
Verfasst: Sonntag 12. Februar 2006, 13:42
von raist1314
Hi,
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
gruss
Sebastian
Verfasst: Sonntag 12. Februar 2006, 13:58
von Poseidonius
yapp, Du hast recht ... zudem auch besser lesbar.
Danke
Re: Arrays in Listen
Verfasst: Montag 13. Februar 2006, 00:35
von BlackJack
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.
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.
Kopie eines Arrays
Verfasst: Dienstag 14. Februar 2006, 08:36
von Poseidonius
Ok, und wie stelle ich das an?
Ich habe eine Klasse angelegt
Code: Alles auswählen
from scipy import *
class calculations:
def __init__(self,Matrix):
self.Matrix=Matrix
und lege Instanzen davon in einer Liste ab
Code: Alles auswählen
Steps=[]
x=array([1,2,3,4])
Steps.append(calculations(x[:].copy)
dann bekomme ich fuer die Abfrage
die Fehlermeldung
build-in method copy of array object
Also habe ich die Idee des .copy falsch verstanden, wer kann mir helfen?
Danke Euch
Re: Kopie eines Arrays
Verfasst: Dienstag 14. Februar 2006, 10:11
von BlackJack
Poseidonius hat geschrieben:Code: Alles auswählen
Steps=[]
x=array([1,2,3,4])
Steps.append(calculations(x[:].copy)
dann bekomme ich fuer die Abfrage
die Fehlermeldung
build-in method copy of array object
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.
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.
methods mit und ohne Klammern
Verfasst: Dienstag 14. Februar 2006, 12:19
von Poseidonius
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