Sophus hat geschrieben:Code: Alles auswählen
def Umwandlung(*Parameter):
Liste = []
[Liste.append(Elemente)
for Elemente in Zahlen
if not Liste.count(Elemente)]
return Liste
def main():
Zahl = [
"5,2",
"7,0",
"8.0",
"2,6"
]
Ergebnis = Umwandlung(Zahl)
print Ergebnis # Ausgabe [['5,2', '7,0', '8.0', '2,6']]
if __name__ == "__main__":
main()
Einen Paramter
Parameter zu nennen ist nicht sinnvoll. Dass es ein Parameter ist, sehe ich daran, dass er syntaktisch an einer Stelle steht, die ihn zum Parameter macht. Wenn ich Code lese will ich aber wissen, was der Parameter im Programm für eine Bedeutung hat. Ein Parameter, der eine Zahl beinhaltet, repräsentiert dann zB. das Alter einer Person. Dann sollte man ihn
alter nennen, aber nicht
parameter. Übrigens sollte man ihn auch nicht
zahl nennen. Denn wenn ich das lese, weiß ich nur den Typ des Parameters, aber nicht, was die Zahl bedeutet. Das Alter? Die Größer einer Person in cm? Den mittleren Abstand der Person von Betelgeuze?
Und der * vor Parameter ... warum steht der da? Das
x in
def f(*x): beinhaltet ein Tupel, dass die übergebenen Argumente als Elemente hat. In deinem Fall also ein Tupel, dass als erstes (und einziges) Element eine Liste von Strings besitzt. Also das hier:
Wenn ich auf das dritte Element der Liste zugreifen möchte, muss ich das folglich so tun:
Das Ergebnis ist dann "8.0". Auch das ist übrigens keine Zahl, sondern ein String, der Buchstaben enthält, aus denen zB. die Funktion
float() eine Zahl erzeugen kann:
Code: Alles auswählen
>>> type("8.0")
<type 'str'>
>>> float("8.0")
8.0
>>> type(float("8.0"))
<type 'float'>
Als nächstes die List Comprehension (LC). Eine LC benötigt kein append(). Hier zum Vergleich ohne LC:
Code: Alles auswählen
>>> zahl_strings = ["5.2", "7.0", "8.0", "2.6"]
>>> zahlen = []
>>> for each in zahl_strings:
... print each, ':', type(each)
...
5.2 : <type 'str'>
7.0 : <type 'str'>
8.0 : <type 'str'>
2.6 : <type 'str'>
>>> for each in zahl_strings:
... zahlen.append(float(each))
...
>>> for each in zahlen:
... print each, ':', type(each)
...
5.2 : <type 'float'>
7.0 : <type 'float'>
8.0 : <type 'float'>
2.6 : <type 'float'>
Und hier mit LC:
Code: Alles auswählen
>>> zahlen = [float(each) for each in zahl_strings]
>>> for each in zahlen:
... print each, ':', type(each)
...
5.2 : <type 'float'>
7.0 : <type 'float'>
8.0 : <type 'float'>
2.6 : <type 'float'>
Wenn du die Kommata in den Strings zu Dezimalpunkten umwandeln und danach aus dem Ergebnis eine Zahl zu erzeugenmöchtest, dann kannst du das einfach so machen:
Code: Alles auswählen
>>> zahl_strings = ["5,2", "7,0", "8.0", "2,6"]
>>> zahlen = [float(each.replace(',', '.')) for each in zahl_strings]
>>> for each in zahlen:
... print each, ':', type(each)
...
5.2 : <type 'float'>
7.0 : <type 'float'>
8.0 : <type 'float'>
2.6 : <type 'float'>
In specifications, Murphy's Law supersedes Ohm's.