Dynamischer Vektor

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Hallo zusammen,
weiß jemand wie ich einen dynamischen Vector schreiben kann?
Also ich meine ich gebe dem Vector seine Dimesion vor.
Beispiel die größe soll 100 sein.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Definiere "Vector" und was du mit dynamisch in dem Zusammenhang meinst. Vektor im Mathematik, oder in der Biologie, oder wie in der Informatik, ...?
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Was nun? Größe oder Dimension? Ein-Dimensional mit variabler Größe ist in Python die `list`, auch als `[...]` geschrieben. Variabeldimensional geht nicht. Feste Größe (und gleichzeitig änderbar) auch nicht.

Stefan
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

also ich habe eine tabelle in messwerte stehen soll.
wenn ich schreiben [5]
dann steht der wert 5 in der ersten zeile der ersten spalte.
wenn ich jetzt [5,4]
dann steht in der ersten spalte in zeile 1 der wert 5 und in der zweiten spalte der wert 4.
jetzt möchte ich, das ich meinem programm sage dass ich 100 werte habe will. aber ich will nicht 100 mal [5,4,.......] schreiben.
also 100 sollen in meiner tabelle stehen.
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Code: Alles auswählen


>>> vector = []
>>> for i in xrange(10):
	vector.append(i)

	
>>> vector
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 
meinst du sowas?
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Ich verstehe Dich nicht, aber ich habe derweil Lust zu raten:
Willst du n-Fach die Liste [5,4]?

Code: Alles auswählen

[5,4]*n
Oder willst du eine Liste mit n Elementen? Wenn ja, wo sollen die herkommen, wenn du sie nicht selbst eingeben willst?

Lonestar: siehe range(10) 8)
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Redprince hat geschrieben: Lonestar: siehe range(10) 8)
guck, und hier verstehe ich dich nicht :wink:, ich wollte eigentlich auf das append raus. Die Listen sind doch schon von sich aus dynamisch
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

ich habe folgendes problem:
mein messwert soll alle 2 sec gemessen werden mit meinem programm.
das heißt ich will jeden messwert der gemessen wurde in meiner tabelle stehen haben. also nicht immer die gleiche zahl sondern jeden messwert in eine neue zeile. ich möcht vorgeben 100 werte also muss er mir 100 zeilen mit dem jeweiligen messwert zeigen.
BlackJack

@Ingo: Wenn Du 100 Werte nacheinander in der "Tabelle" hinzufügst, dann ist die `append()`-Methode der richtige Ansatz, weil das eben eine dynamisch wachsende Liste ist.

Wenn Du am Ende 100 Einträge in der Liste stehen haben möchtest, aber gar nicht so viele Werte bekommst, müsstest Du eine Liste erzeugen, die mit 100 Werten gefüllt ist, zum Beispiel Nullen oder `None`. Das würde ich aber nur machen, wenn die Werte nicht nacheinander in der Liste stehen sollen oder aus irgend welchen Gründen nicht in der Reihenfolge rein kommen, in der sie in der Liste stehen sollen.

Edit: Also prinzipiell sähe das Lesen von 100 Werten dann so aus:

Code: Alles auswählen

    messwerte = list()
    for dummy in xrange(100):
        messwerte.append(lese_messwert())
        time.sleep(2)
Und wenn Dir *das* nicht klar ist, solltest Du unbedingt die Grundlagen lernen, bevor Du weiter machst. Am besten das Tutorial in der Python-Dokumentation durch arbeiten.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

was meinst du mit lese_messwert.
ich habe doch nur eine variable in der der messwert steht. diese variable wird vom nächsten messwert überschrieben.
BlackJack

Damit ist eine Funktion gemeint, die den nächsten Messwert liest. Wie auch immer Du das implementierst. Und so etwas brauchst Du ja, weil der Wert ja nicht alle zwei Sekunden auf magische Weise an einen Namen gebunden wird.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

alle 2 sec ist ein neuer messwert in der variable messwert.
BlackJack

Wie kommt der dort hin? Woher weisst Du das der Wert neu ist, bzw. wann er neu ist?

Und IMHO bist Du definitiv noch nicht so weit um Dich mit nebenläufiger Programmierung herum zu schlagen.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Weil ich ein timer drin habe, der alle 2 sec den wert in die variable schreibt. ich schicke doch über ethernet mein commando raus und bekomme meine antwort. und ich sende genau alle sec mein commando und bekomme darauf hin meinen spannungsmesswert
BlackJack

Na dann hast Du ja eine Funktion, die alle zwei Sekunden aufgerufen wird. Und anstatt den immer an den gleichen Namen zu binden, musst Du ihn halt an eine Liste anhängen.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Hast du ein kleines beispiel parat wie ich meinen messwert an einer liste anhänge?
BlackJack

Ja und das wurde sowohl von mir als auch davor schon von Lonestar gezeigt. Ein Objekt hängt man mit der `append()`-Methode an eine Liste an.

Bevor Du weiter programmierst, arbeite bitte das Tutorial durch. Sonst hat das wenig Sinn.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Das habe ich auch alles probiert. nur das das rauskommt:
0
1
2
3
4
5
6
7
8
9
4,875
der wert 4,875 ist mein messwert der rest nicht. woran kann das nur liegen?
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ingo hat geschrieben:der wert 4,875 ist mein messwert der rest nicht. woran kann das nur liegen?
Aufgrund des aktuellen Mangels an Kristallkugeln würde ich vermuten, dass es am fehlerhaften Programmcode liegt. 8)
BlackJack

Zuzüglich Unwillen sich mal hinzusetzen und die Grundlagen zu lernen, und vorgeschlagenen Quelltext nicht nur blind abzutippen, sondern auch zu verstehen, vermutet meine Kristallgugel. :?
Antworten