Seite 1 von 2

Verfasst: Mittwoch 18. März 2009, 17:08
von DasIch

Code: Alles auswählen

In [82]: def mmap(func, times, seq):
    return ([func(item) for _ in xrange(times)] for item in seq)
   ....:

In [84]: list(mmap(unfold_args(randint), 2, (((1, 10), ) * 10)))
Out[84]:
[[9, 4],
 [8, 1],
 [8, 7],
 [6, 5],
 [2, 6],
 [5, 10],
 [10, 9],
 [7, 2],
 [1, 4],
 [2, 5]]
Was unfold_args macht sollte klar sein.

Verfasst: Mittwoch 18. März 2009, 17:08
von Dauerbaustelle
Nicht ganz, weil du dann ja auch noch das Ganze __*__-Zeugs bekommst. So wäre es besser:

Code: Alles auswählen

[getattr(types, type) for type in dir(types) if '__' not in type]

Verfasst: Mittwoch 18. März 2009, 18:56
von str1442
@ 10 * [None] vs xrange(10): xrange ist eigentlich der am meisten genutze Weg. Im Grunde ist es egal, aber grundsätzlich würde ich keine beliebigen Elemente zum "xmal" iterieren benutzen, sonderen immer {x,}range Objekte, selbst wenn ich die Zahl eigentlich nicht brauche. (und "i" als Variable).

Verfasst: Mittwoch 18. März 2009, 19:47
von numerix
bremer hat geschrieben:Was ist eigentlich schneller? range(10) oder 10 * [None]?
Sollte es hier wirklich auf Performance ankommen - bei n=10 sicher nicht - , dann ist die Erzeugung der Zufallszahlen der Flaschenhals: randint() ist die langsamste Methode, randrange() ist etwas schneller und random() ist erheblich schneller als die beiden anderen Varianten, und zwar selbst dann noch, wenn man ganzzahlige Werte eines bestimmten Intervalls damit erzeugt.

Verfasst: Mittwoch 18. März 2009, 20:36
von snafu
str1442 hat geschrieben:(und "i" als Variable).
Was spricht gegen `dummy`? Gut, das ist jetzt etwas kleinkariert, aber wenn ich die Namen nach ihrer Verwendung vergebe und weiß, dass ich `i` quasi nur als Mittel zum Zweck benötige, macht das ja eigentlich Sinn, find ich.

Verfasst: Mittwoch 18. März 2009, 21:13
von derdon
Für dummy wird (zumindest in den Codeschnipseln hier im Forum) gerne _ verwendet.

Verfasst: Mittwoch 18. März 2009, 21:35
von str1442
Was spricht gegen `dummy`?
Gar nichts, ich hab das für mich so festgelegt, das ich immer, wenn ich nur X Wiederholungen brauch oder einfach einen Zähler, ich i als Name + xrange/range Objekt verwende. "i" ist sowieso ziemlicher Standard und wenn ich den Index nicht brauche, lass ich ihn in Ruhe. Ist dann ausbaufähig und ich habe keinerlei Probleme mit solchem 10 * [None] Zeug. Und in Sprachen wie C mit der Zähl-For-Schleife hab ich das auch immer so gesehen / so gemacht. Und einfach "_" find ich doof ;).