La mia funzione prevede un elenco o una tupla come parametro. Essa in realtà non importa quale è, tutto ciò che fa è passare a un'altra funzione che accetta una lista o tupla:Parametro funzione Python: tupla/lista
def func(arg): # arg is tuple or list
another_func(x)
# do other stuff here
ora ho bisogno di modificare la funzione un po ', per elaborare un ulteriore elemento:
def func(arg): #arg is tuple or list
another_func(x + ['a'])
# etc
Sfortunatamente questo non funzionerà: se arg è tupla, devo dire x + ('a',)
.
Ovviamente, posso farlo funzionare forzando arg per elencare. Ma non è pulito.
C'è un modo migliore per farlo? Non posso costringere i chiamanti a passare sempre una tupla, naturalmente, dato che si limita a lavorare su di loro.
Se l'altra funzione accetta o meno, vorrei inviare una tupla in quanto sarà più veloce con cui lavorare. Quindi cosa non va bene per 'tuple (x) + ('a',)'? – aaronasterling
Le tuple sono più veloci nell'implementazione? – max
costruire una tupla da stringhe e valori letterali numerici è più veloce della costruzione di un elenco. Ancora più importante, 'tuple (x)' restituisce semplicemente 'x' se è già una tupla mentre' list (x) 'copia' x' anche se è già una lista. Quindi, usando una tupla, si taglia la maggior parte del lavoro per metà dei casi di input. – aaronasterling