Je suis un débutant complet pour python et j'essaie de passer un tableau comme argument à une fonction python qui déclare une liste/tableau comme paramètre).
Je suis sûr de le déclarer faux,
voici:
def dosomething(listparam):
#do something here
dosomething(listargument)
De toute évidence, cela ne fonctionne pas, que fais-je de mal?
Merci
Ce que vous avez est sur la bonne voie.
def dosomething( thelist ):
for element in thelist:
print element
dosomething( ['1','2','3'] )
alist = ['red','green','blue']
dosomething( alist )
Produit la sortie:
1
2
3
red
green
blue
Quelques points à noter étant donné votre commentaire ci-dessus: contrairement aux langages de la famille C, vous n'avez souvent pas besoin de vous soucier du suivi de l'index lors de l'itération sur une liste, sauf si l'index lui-même est important. Si vous avez vraiment besoin de l'index, cependant, vous pouvez utiliser enumerate(list)
pour obtenir des paires index,element
, Plutôt que de faire la danse x in range(len(thelist))
.
Peut-être que vous voulez décompresser les éléments du tableau, je ne sais pas si je l'ai, mais ci-dessous un exemple:
def my_func(*args):
for a in args:
print a
my_func(*[1,2,3,4])
my_list = ['a','b','c']
my_func(*my_list)
Je suppose que je ne suis pas clair sur ce que l'OP demandait vraiment ... Voulez-vous passer l'ensemble du tableau/liste et opérer dessus à l'intérieur de la fonction? Ou voulez-vous que la même chose soit faite sur chaque valeur/élément dans le tableau/la liste. Si c'est ce que vous souhaitez, j'ai trouvé une méthode qui fonctionne bien.
Je connais mieux les langages de programmation tels que Fortran et C, dans lesquels vous pouvez définir des fonctions élémentaires qui opèrent sur chaque élément d'un tableau. J'ai finalement retrouvé l'équivalent python et j'ai pensé republier la solution ici. La clé est de 'vectoriser' la fonction. Voici un exemple:
def myfunc(a,b):
if (a>b): return a
else: return b
vecfunc = np.vectorize(myfunc)
result=vecfunc([[1,2,3],[5,6,9]],[7,4,5])
print(result)
Sortie:
[[7 4 5]
[7 6 9]]