hallo leute, ich hab eine frage, und zwar möchte ich, dass der benutzer gefragt wird wieviele listen erstellt werden sollen, und der pc (python) dann diese erstellt also frei nach dem beispiel. am ende sollte auf alle listen zugegriffen werden, ohne dass man noch listen erstellen muss. meine einzigste idee zu dem thema wäre unendlich viele listen erstellen und hoffen dass der benutzer nicht noch mehr möchte
eigentlich wollt ich das problem selber lösen, aber vlt könnt ihr mir ja einen tipp geben, nicht gleich komplett lösen, ich wollte selbst drauf kommen die "help(list)" funktion von python hat mir leider auch nicht weitergeholfen
mfg Fantacoca
beliebig viele Listen erstellen lassen!?
Hallo!
Erst willst du den Benutzer eingeben lassen, wie viele Listen erstellt werden sollen, aber dann soll er auf mehr zugreifen können? Deine Frage verstehe ich irgendwie nicht so recht.
Erzähle uns lieber was das eigentliche Problem ist, dann können wir dir bestimmt mit einer vernünftigen Lösung helfen.
Erst willst du den Benutzer eingeben lassen, wie viele Listen erstellt werden sollen, aber dann soll er auf mehr zugreifen können? Deine Frage verstehe ich irgendwie nicht so recht.
Erzähle uns lieber was das eigentliche Problem ist, dann können wir dir bestimmt mit einer vernünftigen Lösung helfen.
Das Leben ist wie ein Tennisball.
ich wollte nur nicht dass ihr mir die "hausaufgaben" lösen müsst >.<
also:
ich soll ein programm zur einfachen matrixberechnung schreiben (matrix transponieren, etc)
dazu nutzt man Listen in einer Liste:
die erste Liste ist die Spalten Anzahl, und pro listenargument kommt eine neue liste, die dann stellvertetend fr die Zeilenanzahl ist.
der User gibt nun eine Zahl n und m ein. n steht für die spaltenanzahl, und m steht für die Zeilenanzahl.
also hab ich schonmal die erste Liste:
spalten(zeilen1, zeilen2, ..... , zeilenN)
und zeilen 1 bis n müssen natürlich erzeugt werden. die kann man ja nicht vorher in den speicher einlesen lassen, und dass ist mein problem, dass der user sagt "ich will eine matrix mit 5 spalten und 3 zeilen) also müssen fünf neue listen erzeugt werden, die jeweils 3 argumente lang sind.
ich hoffe ich erzähl nicht zuviel in rätseln.
also:
ich soll ein programm zur einfachen matrixberechnung schreiben (matrix transponieren, etc)
dazu nutzt man Listen in einer Liste:
die erste Liste ist die Spalten Anzahl, und pro listenargument kommt eine neue liste, die dann stellvertetend fr die Zeilenanzahl ist.
der User gibt nun eine Zahl n und m ein. n steht für die spaltenanzahl, und m steht für die Zeilenanzahl.
also hab ich schonmal die erste Liste:
spalten(zeilen1, zeilen2, ..... , zeilenN)
und zeilen 1 bis n müssen natürlich erzeugt werden. die kann man ja nicht vorher in den speicher einlesen lassen, und dass ist mein problem, dass der user sagt "ich will eine matrix mit 5 spalten und 3 zeilen) also müssen fünf neue listen erzeugt werden, die jeweils 3 argumente lang sind.
ich hoffe ich erzähl nicht zuviel in rätseln.
Wie wäre es mit ``list.append``?
Was du meinst ist das, oder?
Was du meinst ist das, oder?
Code: Alles auswählen
[[list() for _ in range(m)] for _ in range(n)]
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
@jbs:
dass ist das was ich suche, aber der code macht mir irgendwie angst o.O ich versteh den nicht, ich bin jemand der wissen will wie etwas geht, und nicht nur dass es geht, kannst du mir evtl erklären wass deine eine zeile code da alles so anrichtet? bzw hast du abkürzungen benutzt?
beim sufu nutzen bin ich auch auf etwas interessantes gestoßen
nur hab ich bei dem zeug das gleiche problem wie bei dem von jbs, ich hab keinen plan was das da tut, und warum es geht, und was exec ist und hilfe un ich dreh durch *waaaaah* ^^
dass ist das was ich suche, aber der code macht mir irgendwie angst o.O ich versteh den nicht, ich bin jemand der wissen will wie etwas geht, und nicht nur dass es geht, kannst du mir evtl erklären wass deine eine zeile code da alles so anrichtet? bzw hast du abkürzungen benutzt?
beim sufu nutzen bin ich auch auf etwas interessantes gestoßen
Code: Alles auswählen
for i in range(5):
exec 'list%s = []' %i
>>> list0
[]
>>> list1
[]
>>> list2
[]
>>> list3
[]
>>> list4
[]
Vielleicht kennst du keine list-comprehensions?
Weniger elegant, aber vielleicht für dich verständlicher:
Wichtig ist, dass du KOPIEN der Zeilen anfügst, sonst besteht deine Matrix am Ende zwar aus 3 Zeilen, die aber alle Referenzen auf die gleiche Liste sind. Änderst du dann EINEN Wert der Matrix, änderst du immer gleich drei Werte auf einmal ...
Weniger elegant, aber vielleicht für dich verständlicher:
Code: Alles auswählen
>>> zeilenzahl, spaltenzahl = 3, 5
>>> zeile = [0]*spaltenzahl
>>> matrix = []
>>> for k in xrange(zeilenzahl):
... matrix.append(zeile[:])
...
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Der Einzeiler ist etwa ähnlich wie das:
Schau dir mal den Artikel über List-Comprehenshions an.
Exec führt einen String aus, als sei er python-Code. Ganz eklig sowas.
Edit: Verdammt, zu spät.
Code: Alles auswählen
matrix = []
for _ in range(m):
l = []
for _ in range(n):
l.append([])
matrix.append(l)
Exec führt einen String aus, als sei er python-Code. Ganz eklig sowas.
Edit: Verdammt, zu spät.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Da dürfte die Python Dokumentation genau das richtige für dich sein:Fantacoca hat geschrieben:ich versteh den nicht, ich bin jemand der wissen will wie etwas geht, und nicht nur dass es geht,
<> The ``exec`` statement
<> list comprehension
Grüße
Gerrit
@Fantacoca: Du musst die Matrix doch gar nicht am Anfang erstellen, wenn der Benutzer die Zeilen später eingeben muss. Da kann man doch genau so gut jede Zeilen *nachdem* sie eingegeben wurde an die Matrix anhängen.
Interessant vielleicht, aber auch böse.Fantacoca hat geschrieben: beim sufu nutzen bin ich auch auf etwas interessantes gestoßen
Code: Alles auswählen
for i in range(5): exec 'list%s = []' %i
Vergiss einfach was du da gesehen hast. Das ist einfach eine unsaubere Methode um ein Problem zu lösen das man nicht hätte wenn man es gleich richtig machen würde.