Seite 1 von 1

Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 10:10
von mutetella
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?

Re: Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 11:09
von EyDu
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

Re: Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 11:22
von mutetella
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...

Re: Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 11:25
von DrFaust
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

Re: Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 11:29
von EyDu
@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.

Re: Element in Liste ersetzen...

Verfasst: Donnerstag 21. Oktober 2010, 11:38
von mutetella
@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...