2016-08-14 1 views
1

Ich bin neugierig, wie Code in Python effizienter machen, ich muss eine Aktion ausführen, die abhängig von der Länge möglicherweise eine Nutzlast angehängt haben oder nicht eine Liste.Python - Übergeben Sie eine Variable an Lambda, wenn es existiert

Im Moment verwende ich eine if-Anweisung, um festzustellen, ob es eine Nutzlast gibt. Gibt es einen besseren oder saubereren Weg, das zu finden?

+1

Welche Art von Effizienz suchen Sie? –

+0

ideal sauberer Code/bessere Logik. Ich denke nicht, dass es möglich ist, dies in Bezug auf die Zeit effizienter zu machen? – ForeverLearning

+0

Es sieht gut aus wie es ist: Wenn Sie die Kommentare entfernen, ist der Code immer noch verständlich. Die einzigen Dinge, die ich ändern würde, ist die 'if'-Anweisung: Sie brauchen diese Klammern nicht. –

Antwort

3

Der Code ist so effizient, wie es ist - anstatt für die Effizienz zu optimieren, versuchen Sie zuerst, für Klarheit zu optimieren. Wenn der Code dann ein Performance-Hotspot wird ... denken Sie über die Effizienz nach.


Erinnern, dass eine return eine Funktion beendet; Dies ist eine etwas sauberere Alternative:

+2

"versuchen Sie zunächst, die Klarheit zu verbessern." Dies kann etwas dauern, um in Software zu lernen. * Cleverer Code * ist der Fluch der Betreuer, einschließlich dir selbst in 6 Monaten. Schreibe sauberen Code, profiliere die Performance, optimiere dann, was optimiert werden muss ... und zitier den Mist aus allem, was auch nur vage "clever" ist. –

2

Python kommt mit Vararg-Syntax, die Sie direkt dafür verwenden können.

return mec.action(*data[1:]) 

(Ich gehe davon aus, dass hier data[2] weiter nicht sinnvoll sind, oder Sie könnten mec.action(*data[1:2]) verwenden)

0

In diesem Fall nur einen ternären Operator wie folgt verwenden:

return mec.action(data[1]) if(len(data) > 1) else mec.action() 

Hoffnung es hilft!

Verwandte Themen