Ich habe eine Liste und ich möchte das Element finden, das die niedrigste Anzahl von '*' hat.Get Element in Liste mit der niedrigsten Anzahl von *
mylist = ['12*3','12345**6','11234']
So ist die Antwort in diesem kleinen Test '11234'
Dies funktioniert ist, aber langsam (ich arbeite mit massiven genomischen Daten:
sorted(mylist, key = lambda x: x.count('*'))[0]
Dies ist weniger eloquent, aber Werke :
values = map(lambda x: x.count('*'), mylist)
print mylist[values.index(min(values))]
gibt es eine bessere Art und Weise ich ein Schwartzian trans zu tun versuchte? Bildung aber kann es nicht herausfinden.
Ich denke, die Unterschiede in Ihren Timings sind nicht spürbar. Sicherlich nicht genug, um die Behauptung zu stützen, dass "Lambda-Funktionen langsam sind", oder - großzügiger - "langsamer". Wenn ich die gleichen Snippets mehrfach benutze, kommt manchmal die benannte Funktion voraus, manchmal kommt das 'Lambda' voraus. Dies führt mich zu der Annahme, dass die Unterschiede nur Rauschen und/oder ein gewisser Störfaktor sind. AFAIK, in CPython gibt es keinen wirklichen Unterschied in der Implementierung von "Lambda" - und "Def" -Funktionen. Ich sehe keinen Grund, warum die Ausführung eines "Lambda" langsamer als die äquivalente benannte Funktion wäre. –