Python-Funktion parameter: Tupel/Liste

Meine Funktion erwartet eine Liste oder ein Tupel als parameter. Es spielt nicht wirklich, was es ist, alle es tut, ist, übergeben Sie es an eine andere Funktion akzeptiert entweder eine Liste oder Tupel:

def func(arg): # arg is tuple or list
  another_func(x)
  # do other stuff here

Nun muss ich ändern Sie die Funktion leicht zu verarbeiten, wird ein zusätzliches element:

def func(arg): #arg is tuple or list
  another_func(x + ['a'])
  # etc

Leider ist dies nicht zur Arbeit gehen: wenn die arg-Tupel, muss ich sagen x + ('a',).

Offensichtlich, ich kann damit es funktioniert, indem die Nötigung arg in der Liste. Aber es ist nicht ordentlich.

Gibt es eine bessere Art, das zu tun? Ich kann nicht zwingen, Anrufern stets pass ein Tupel, natürlich, da es einfach Schichten zu arbeiten, um Ihnen.

  • Wenn die andere Funktion akzeptiert entweder als ich würde ihn ein Tupel wird es schneller sein, für Sie zu arbeiten. Was dann nicht ordentlich über tuple(x) + ('a',)?
  • Sind die Tupel schneller in der Umsetzung?
  • Bau eines Tupels von Strings und numerischen literalen ist schneller als das konstruieren einer Liste. Noch wichtiger ist, tuple(x) nur zurück x wenn es bereits ein Tupel in der Erwägung, dass list(x) Kopien x auch wenn es schon eine Liste. So durch die Nutzung der ein Tupel, schneiden Sie die meisten der Arbeit für die Hälfte Ihrer Eingabe Fälle.
  • +1: guter Punkt, um Tupel vs-Liste.
InformationsquelleAutor max | 2010-11-17
Schreibe einen Kommentar