Per Zufall Einträge in einer Liste auswählen?
-
- User
- Beiträge: 2
- Registriert: Freitag 10. Dezember 2010, 22:47
Hi wie geht das das man in einer Liste mit einträgen per Zufall einen davon ausfwählt und dann ausgibt?
Code: Alles auswählen
>>> import random
>>> l = ['foo', 'bar', 'baz']
>>> for x in random.sample(l, len(l)):
... print x
...
...
baz
bar
foo
Um das zu vermeiden, kannst du eine Kopie der Liste erstellen und ein Element entfernen, nachdem es "geyieldet" wurde (meiner Meinung nach bietet sich nämlich ein Generator an). Hängt von deinem Ziel ab, was du vorhast.
@derdon: Statt die Liste bei jedem "gezogenen" Element zu verändert, könnte man sie auch einmal am Anfang "mischen" und dann einfach einen Iterator über die "gemischte" Liste verwenden.
-
- User
- Beiträge: 2
- Registriert: Freitag 10. Dezember 2010, 22:47
danke für die antwort mach so ne art wissenquiz und hab die fragen in kategorien unterteilt nach denen ich vor frage. dementsprechend hab ich das ganze auf mehrere listen aufgeteilt und hab jetzt mit random.choice aus jeder liste ne zufallsauswahl gemacht. die zufallsauswahl hab ich dann in eine funktion gepackt die ich nach abfrage der kategorie dann aufrufe.
das problem ich hab x-if abfragen die ich zwar ordentlich kommentiere aber kann man das ganze net evlt. einfacher lösen. beim dictionary wären ja frage und antwort schon in einem schlüsselpaar. wie kann ich vergleichen wenn ich ne eingabe machen ob die dann auch stimmt. das heißt das eben die antwort zum schlüsselpaar des dictionaries gehört.
bin jetzt bei byte of python gerade am ende von kapitel 9 und wollte mal ein größeres praktisches programm schreiben, also eben das quiz, mit dem ich was dazu lerne.
mein programm funktioniert soweit. kann ich den programmcode hier mal posten? oder im unterforum für codeschnipsel?
das problem ich hab x-if abfragen die ich zwar ordentlich kommentiere aber kann man das ganze net evlt. einfacher lösen. beim dictionary wären ja frage und antwort schon in einem schlüsselpaar. wie kann ich vergleichen wenn ich ne eingabe machen ob die dann auch stimmt. das heißt das eben die antwort zum schlüsselpaar des dictionaries gehört.
hmm. ja wie funktioniert das genau?BlackJack hat geschrieben:@derdon: Statt die Liste bei jedem "gezogenen" Element zu verändert, könnte man sie auch einmal am Anfang "mischen" und dann einfach einen Iterator über die "gemischte" Liste verwenden.
bin jetzt bei byte of python gerade am ende von kapitel 9 und wollte mal ein größeres praktisches programm schreiben, also eben das quiz, mit dem ich was dazu lerne.
mein programm funktioniert soweit. kann ich den programmcode hier mal posten? oder im unterforum für codeschnipsel?
Das habe ich in meinen beiden Beiträgen beschrieben.ledzep1981 hat geschrieben:hmm. ja wie funktioniert das genau?BlackJack hat geschrieben:@derdon: Statt die Liste bei jedem "gezogenen" Element zu verändert, könnte man sie auch einmal am Anfang "mischen" und dann einfach einen Iterator über die "gemischte" Liste verwenden.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@ledzep1981: Du solltest neben ABoP auch immer die offizielle Doku in einem browser offen haben. Dann kannst Du im random-Modul einfach mal nachgucken, wie die genannten Funktionen aufzurufen sind bzw. was sie bewirken. Und dann probierst Du es einfach in einer Shell aus
Generell solltest Du Dir Gedanken über Deine Datenstrukturen machen; das ganze vor dem Kontext, welche Operationen darauf ausgeführt werden sollen. Dazu können wir mit den bisherigen Infos schlecht etwas sagen. Evtl. beschreibst Du (in einem neuen Thread?) die geplanten Spielregeln und/oder postest Deinen (hoffentlich kommentierten) Quellcode im Pastebin (s. oben in der Menüleiste). Evtl. können wir Dir dan Tipps geben, ob oder auch wie man etwas eleganter / besser lösen kann.
Generell solltest Du Dir Gedanken über Deine Datenstrukturen machen; das ganze vor dem Kontext, welche Operationen darauf ausgeführt werden sollen. Dazu können wir mit den bisherigen Infos schlecht etwas sagen. Evtl. beschreibst Du (in einem neuen Thread?) die geplanten Spielregeln und/oder postest Deinen (hoffentlich kommentierten) Quellcode im Pastebin (s. oben in der Menüleiste). Evtl. können wir Dir dan Tipps geben, ob oder auch wie man etwas eleganter / besser lösen kann.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert