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

Mittwoch 5. November 2008, 14:36

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

Mittwoch 5. November 2008, 14:45

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

Mittwoch 5. November 2008, 15:19

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:

Mittwoch 5. November 2008, 15:29

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

Mittwoch 5. November 2008, 15:46

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. :?
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 5. November 2008, 15:48

Ingo hat geschrieben: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?
Du hast eine Liste mit range(10) erzeugt and dann 4,875 als elftes Element drangehängt.

Ich hab auch nicht wirklich eine Ahnung, was du tun willst ... die Liste soll immer 100 Elemente haben und bei Bedarf die ältesten (die obersten) rauswerfen?
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Mittwoch 5. November 2008, 15:49

ich vermute auch mal das liegt am Quellcode :roll:

vielleicht solltest du deinen Versuch hier mal posten - evtl erbarmt sich noch jemand und hilft dir.

[edit]
... aber ich schmeiss mich in die Ecke wenn das der Fehler ist den ich gerade vermute ...
[/edit]
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 5. November 2008, 15:56

Ich rate einfach weiter ... was Du tun kannst ist immer weiter anhängen, und bei jedem Durchlauf die Länge der Liste abfragen.

Code: Alles auswählen

...

dyn_vektor.append(dein_messwert)

...

if len(dyn_vektor) == 101:
        dyn_vektor = dyn_vektor[1:101]

...
Damit wird der älteste Wert (Index 0) weggeschmissen und die Liste ist wieder 100 Elemente lang.
BlackJack

Mittwoch 5. November 2008, 16:10

Für den Fall wäre wohl eine `collections.deque` eine bessere Wahl. Natürlich am besten in eine eigene Klasse verpackt.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 5. November 2008, 16:15

Lässt sich da die Länge fixieren?
BlackJack

Mittwoch 5. November 2008, 16:26

Nein, deswegen ja die eigene Klasse. Ungetestet:

Code: Alles auswählen

class BoundedQueue(object):
    def __init__(self, max_length):
        self.max_length = max_length
        self.data = collections.deque()
    
    def __len__(self):
        return len(self.data)
    
    def __iter__(self):
        return iter(self.data)
    
    def append(self, value):
        self.data.append(value)
        if len(self) > self.max_length:
            self.data.popleft()
abgdf

Mittwoch 5. November 2008, 16:33

Ich glaube, der OP kommt aus der C-Welt und kann sich einfach nicht vorstellen, daß die Dinge so einfach sein können, wie Python sie macht.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Mittwoch 5. November 2008, 16:56

Also ich habe eine schleife in der zuerst nach einem messwert gefragt wird. ich bekomme den messwert. dieser messwert wird in der tabelle angezeigt. die schleife ist nun zu ende. sie beginnt von vorne und fragt wieder nach dem messwert ich bekommen den messwert dieser soll in einer neuen zeile angezeigt werden. der vorherige messwert ist eine zeile oben drüber. ich bestimme wie oft die schleife durchläuft und bestimme dadurch die anzahl meiner messwerte. aber wie kann ich immer den aktuellsten messwert in die neue zeile bringen?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mittwoch 5. November 2008, 17:04

@Ingo:
Einige sehr bemühte Menschen raten hier um die Wette, was genau dein Problem ist, warum es nicht so funktioniert, wie du es gerne hättest und geben dir hilfreiche Tipps.

Warum zeigst du nicht einfach mal den Code, der das machen soll, was du gerne hättest, aber es nicht tut. Dann wäre das Problem wahrscheinlich ruckzuck gelöst!
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 5. November 2008, 17:07

Du solltest wirklich versuchen dein Problem vernünftig zu formulieren.

Du kannst neue Messwerte mit "append" anhängen. Eigentlich genauso wie in deinem "[0,1,2,3,4,5,6,7,8,9,4.875]"-Beispiel. Was passt dir daran nicht?

Leere Listen erzeugst mit

Code: Alles auswählen

dyn_vektor = list()
Mit Nullen gefüllt und 100 Elemente lang: z.B.:

Code: Alles auswählen

dyn_vektor = [0] * 100
Antworten