input in Liste abspeichern.
Ich möchte ein Programm schreiben, wo der Benutzer Zahlen nacheinadner eingibt, solange bis er # eingibt. Die Zahlen bis zum # sollen in einer Liste gespeichert werden. Wie mache ich dies? Gibt es ein Befehl den input direkt in einer Liste zu speichern? Danke schonmal im vorraus
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Nee, das musst du in 2 Schritten machen. So oder so. Plus natürlich aus dem Grund, den Sirius3 genannt hat.Gibt es ein Befehl den input direkt in einer Liste zu speichern?
Gruß, noisefloor
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Vielleicht magst du trotzdem deinen Code hier zeigen? Gerade als Anfänger bekommst du dann sicherlich noch den ein- oder anderen Tipp dazu.
Gruß, noisefloor
Klingt schon mal gut.Benutzte einfach eine While Schleife und list.append.
Vielleicht magst du trotzdem deinen Code hier zeigen? Gerade als Anfänger bekommst du dann sicherlich noch den ein- oder anderen Tipp dazu.
Gruß, noisefloor
Man braucht noch map und iter:
Code: Alles auswählen
numbers = list(map(int, iter(input, '#')))
Code: Alles auswählen
digit_lst = []
while True:
digit =input('Geben Sie eine Zahl ein und bestätigen sie mit \
Enter. Wenn sie genug Zahlen eingegeben haben, Geben Sie # ein.')
if digit == '#':
break
else:
digit_lst.append(int(digit))
Mir kam jetzt eine neue Frage auf. Wenn ich eine Liste habe und diese in ein set() verwandle ändern sich die Positionen der Zahlen siehe Bsp.
Wie kann ich dies verhindern ?
Ich möchte, dass die Listen Struktur beibehalten wird also eigentlich die Menge so aussähe: {1, 2, 3, 4, 5, 6, 9, 8}.
Wie kann ich dies verhindern ?
Code: Alles auswählen
a = [1, 2, 3, 4, 5, 6, 1, 2, 9, 8]
>>> set(a)
{1, 2, 3, 4, 5, 6, 8, 9}
@Fl4mer: eine Menge hat keine Reihenfolge.
Code: Alles auswählen
from collections import OrderedDict
numbers = list(OrderedDict.fromkeys(a))
@Fl4mer: Das kannst Du gar nicht verhindern. Mengen haben keine definierte Ordnung. Wenn Du aus einer Liste eine andere Liste erstellen willst, wo keine Elemente doppelt vorkommen, aber die Elemente in der gleichen Reihenfolge stehen, dann musst Du das explizit selbst programmieren. Also die eine Liste durchgehen und Elemente nur dann in der zweiten Liste hinzufügen falls sie noch nicht vorkamen. Dafür kann man dann wieder ein `set` verwenden, um sich zu merken was man schon mal hatte.
Du solltest Dir übrigens zwei Sachen Namen betreffent gleich abgewöhnen: Abkürzungen und konkrete Grunddatentypen im Namen. Also weder `_lst` noch `_list` irgendwo an Namen anhängen.
`digit` beziehungsweise `digit_lst` (oder eben besser `digits`) wäre übrigens auch nur richtig wenn die Zahlen alle nur eine Ziffer lang sind. Was aber nicht sichergestellt wird. Und in dem Fall könnte man sich die Eingabe auch einfacher machen in dem man alle Ziffern in einer Zeichenkette abfragt und die dann aufteilt.
Du solltest Dir übrigens zwei Sachen Namen betreffent gleich abgewöhnen: Abkürzungen und konkrete Grunddatentypen im Namen. Also weder `_lst` noch `_list` irgendwo an Namen anhängen.
`digit` beziehungsweise `digit_lst` (oder eben besser `digits`) wäre übrigens auch nur richtig wenn die Zahlen alle nur eine Ziffer lang sind. Was aber nicht sichergestellt wird. Und in dem Fall könnte man sich die Eingabe auch einfacher machen in dem man alle Ziffern in einer Zeichenkette abfragt und die dann aufteilt.
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
oder so:
Ich hätte ja gedacht, das BlackJack noch eine Lösung auf Basis der itertools raus haut... Kommt vielleicht noch
Gruß, noisefloor
oder so:
Code: Alles auswählen
>>> my_list = [1, 2, 3, 1, 2, 9, 8]
>>> no_dublicates = []
>>> for item in my_list:
... if item not in no_dublicates:
... no_dublicates.append(item)
...
>>> no_dublicates
[1, 2, 3, 9, 8]
>>>
Gruß, noisefloor
@noisefloor: Da sollte man sich aber im klaren über die Ineffizienz des Algorithmus sein, und das nicht mit grösseren Datenmengen versuchen.
Edit: Ach ja: `duplicates`
Edit: Ach ja: `duplicates`
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@BlackJack: War gedanklich wohl bei Dub-Musik
BTW: wenn man bei Google nach "python list eliminate duplicates" findet man noch eine ganze Reihe Threads mit weiteren Möglichkeiten, das Problem zu lösen. Keine Ahnung, welcher bei großen Datenmengen der effizienteste ist.
Gruß, noisefloor
@BlackJack: War gedanklich wohl bei Dub-Musik
BTW: wenn man bei Google nach "python list eliminate duplicates" findet man noch eine ganze Reihe Threads mit weiteren Möglichkeiten, das Problem zu lösen. Keine Ahnung, welcher bei großen Datenmengen der effizienteste ist.
Gruß, noisefloor