Seite 1 von 1

Listen, Zahlen entnehmen und löschen

Verfasst: Mittwoch 3. November 2004, 09:08
von Gast
Tag,

also es sieht so aus, dass ich keine Ahnung und keine Zeit hab es selbst herauszufinden bzw. nachzulesen. Ich veröffentliche meinen Programmcode absichtlich nicht, weiil er nicht besonders ausgereift ist und ich mich nicht vollkommen blamieren will!
Ich hab da also zwei Listen x,z. Wie kann ich also ein beliebiges Element dieser Listen entnehmen, und dann genau dieses Ellement löschen? Diee Liste heißt l, falls das was mit l. ist.

mfg

Verfasst: Mittwoch 3. November 2004, 09:48
von mawe
Hi!

Niemand blamiert sich hier wenn er Fragen stellt, oder "nicht ausgereiften" Code zeigt!
Zu deiner Frage: Ich versteh sie nicht :D. Du hast die Listen x und z und die Liste heisst l? Naja, so löscht man jedenfalls Elemente aus einer Liste:
del liste[i:j] -> Elemente mit den Indizes i bis j werden gelöscht.
liste.remove(x) -> Das erste Element mit dem Wert x wird gelöscht

Code: Alles auswählen

x = ["a","b","c","d"]
del x[1:2]    # -> x = ["a","c","d"]
x.remove("b")   # -> selbes Ergebnis
Falls Du etwas anderes meinst, zeig mal ein Beispiel :wink:

Gruß, mawe

Verfasst: Mittwoch 3. November 2004, 11:20
von Dookie
Hi,

wenn nur ein Element gelöscht werden soll geht auch

Code: Alles auswählen

del x[1]
Die von mawe gezeigte Form del x[a:b] bietet sich an, wenn mehrere aufeinanderfolgende Elemente der Liste gelöscht werden sollen, es werden dann alle Elemente vom Index a bis Index b-1 gelöscht.


Gruß

Dookie

Verfasst: Mittwoch 3. November 2004, 16:22
von Leonidas
Du könntest aber auch l.pop() nutzen.

Verfasst: Donnerstag 4. November 2004, 09:46
von Treehorn
Hehe, das kanne ich noch gar nicht. Ich habs immer so gemacht.

Code: Alles auswählen

li = li[:index] + li[index+1:]
Vielleicht hätte ich Python doch nicht ausschließlichlich durch Foren lesen und Fremden Code angucken lernen sollen ;)[/python]

Verfasst: Donnerstag 4. November 2004, 11:24
von Leonidas
Huhu, das ist abenteuerlich, aber es funktioniert... das gekört wohl zum Kapitel Obfuscating Python :)
Nein, aber mal im Ernst, li.pop() steht auch in der Python Doku, da stehen viele gute Tricks drin :)
Interessant ob pop() so implementiert ist (das was ich schreibe ist sicher nichtmal Python Code *g*)?

Code: Alles auswählen

def pop(self, index):
    record = self[index]
    self = self[:index] + self[index+1:]
    return record

Verfasst: Mittwoch 10. November 2004, 08:25
von Gast
aber wie nehm ich nun ein Element aus der Liste, um dann das Element weiterzuverwenden. Ich glaub ich habs mal gewusst aber ich glaub 8ich habs verdrängt.
Der Code ist noch nicht mal halbwegs soweit, deswegen scheint es mir unmöglich den code zu posten.
.

Verfasst: Mittwoch 10. November 2004, 08:29
von mawe
Hi!

Code: Alles auswählen

liste = ["a","b","c"]
x = liste.pop(1)
print x
Gruß, mawe

Verfasst: Mittwoch 10. November 2004, 08:48
von Gast

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "F:\Testscrip.py", line 5, in ?
    print x
AttributeError: 'tuple' object has no attribute 'pop'
>>> 
Das ist der Fehler, wenn ich das so schreibe:

Code: Alles auswählen

x = [2,5,8,44,6,22,11,62,29]
y = [84,3,24,5,654,77,48,68]
l=x,y

x = l.pop(min(l))
print x 
Vielleicht sagt mal einer, was das im einzelnen bedeutet.

Verfasst: Mittwoch 10. November 2004, 09:06
von mawe
Hi!

Mit l = x,y hast Du ein Tupel erzeugt, und das kennt kein pop (steht in der Fehlermeldung :wink:).
Ich versteh immer noch nicht was genau Du machen willst. Sollen von x und y jeweils die kleinsten Werte gelöscht werden? Schreib doch mal was das Ergebnis sein soll.

Gruß, mawe

Verfasst: Mittwoch 10. November 2004, 09:23
von Gast
Das Ergebnis? Ja ist mir nicht klar, denn es ist nur eiin Teil des ganzen Projekts. Wie mach ich denn sonst, dass zwei Variablen, also die zwei Listen, auf eine Variablee übertragen werden?
Ich wollt nur, dass irgenteins ode das erste oder so aus den Listen genommen wird, damit was gemacht wird und das Element dann gelöscht wird.

Verfasst: Mittwoch 10. November 2004, 14:24
von mawe
Hi!

Mit "Ergebnis zeigen" hab ich gemeint: was sollte deiner Meinung nach der Code den Du gepostet hast bewirken (also was sollte in x stehen) :wink:. Na gut, Du willst also von beiden Listen das z.B. erste Element:

Code: Alles auswählen

x = [4,5,6]
y = [7,8,9]
newx = x.pop(0)
newy = y.pop(0)
Jetzt kannst Du mit newx und newy weiterarbeiten. Wenn Du's unbedingt mit deinem l machen willst:

Code: Alles auswählen

l = x,y
newx, newy = [i.pop(0) for i in l]
Hilft das?

Gruß, mawe