Element in Liste ersetzen...

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.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

ich möchte aus

[-1, 15, 28]

eine Liste

[31, 15, 28]

erstellen, wobei -1 nicht zwingend vorne liegt.

Code: Alles auswählen

list[list.index(-1)] = 31
schaut mir irgendwie ganz schön verkrampft aus... Gibt's was schöneres oder passt das so?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Code: Alles auswählen

>>> [x-1 if x%2 else x for x in range(10)]
[0, 0, 2, 2, 4, 4, 6, 6, 8, 8]
Zumindest, wenn du alle Vorkommnisse anpassen möchtest.

Sebastian
Das Leben ist wie ein Tennisball.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Sorry, da steig' ich jetzt nicht durch... :?

Wenn Du mit Deinem Beispiel auf LC hinweisen möchtest, dann könnte ich mir in meinem Fall nur folgendes vorstellen:

Code: Alles auswählen

[x for x in [-1, 15, 28] if x >= 0]
Und ans Ergebnis noch append(31).

Oder steh' ich auf'm Schlauch?


EDIT: -1 kommt in der Liste nur 1 x vor...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
DrFaust
User
Beiträge: 21
Registriert: Freitag 15. Oktober 2010, 23:10

Ich vermute mal, dass du 'list' vorher an deine Liste gebunden hast. Das ist etwas unglücklich, weil da normaler Weise der Python Listen-Datentyp dran gebunden ist. Ich verwende dafür jetzt mal mylist

Ich glaube EyDu und ich haben, das was du tun wolltest unterschiedlich verstanden. Ich hätte das so gemacht:

Code: Alles auswählen

mylist = [31 if x == -1 else x for x in mylist]
Wie auch immer. Wenn du nur das erste einer ganzen Reihe von Vorkommen von -1 ersetzen willst oder es nur genau ein Vorkommen geben kann, ist deine Lösung IMHO gut so. Ansonsten ist list comprehension, wie von EyDu vorgeschlagen wahrscheinlich der beste Weg.

Vorsicht: Wenn deine Liste gar keine -1 enthält, führt dein Ansatz zu einem ValueError
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@DrFaus: Wie haben das Problem schon gleich verstanden. Ich bin nur davon ausgegangen, dass man von meinem Beispiel leicht auf die gewünschte Lösung kommt.
Das Leben ist wie ein Tennisball.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@DrFaust:
Vielen Dank, Deine Lösung ist genau, was ich brauche.
EyDu hat geschrieben:..., dass man von meinem Beispiel leicht auf die gewünschte Lösung kommt.
:oops: Da fehlt mir noch eine gehörige Portion...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten