Pages : 1
#1 Le 03/07/2017, à 22:19
- paul18
exec() avec variable
Bon ça fait 2 heures que je cherche tout en tournant en rond, alors je finis une nouvelle fois par vous solliciter ; j'ai plusieurs array :
mat1 = np.random.rand(5,1); print ("mat1 : ", mat1)
mat2 = np.random.rand(5,1); print ("mat2 : ", mat2)
...
mat_n = np.random.rand(5,1); print ("mat_n : ", mat_n)
je souhaite utiliser une instruction du genre (et avec la variable i) :
i = 1
exec("mat +str( i) + [0][0] = 100")
En dehors d'un pb de quote, comment implémenter i ? sur pas mal de forum, il est fortement déconseillé d'utiliser exec(), alors quoi employer ?
Merci par avance
Paul
Hors ligne
#2 Le 04/07/2017, à 04:16
- J5012
Re : exec() avec variable
euh ... tu es dans quel langage ?
en effet exec est toujours une mauvaise idee tous langages confondus
precedemment tu programmais en python, bash, C, squeak ... , et la ?
Hors ligne
#3 Le 04/07/2017, à 04:52
- pingouinux
Re : exec() avec variable
Bonjour,
exec("mat%s[0][0] = 100"%i)
exec peut être dangereux si tu n'es pas maître de ce qu'il exécute. C'est un peu comme exécuter un script dont tu ignores le contenu.
Hors ligne
#4 Le 04/07/2017, à 06:50
- vv221
Re : exec() avec variable
en effet exec est toujours une mauvaise idee tous langages confondus
*Presque* toujours
Un exemple d’utilisation sans risque de exec en Shell à la ligne 57 de ce fichier :
https://framagit.org/vv221/play.it/blob … _common.sh
Jouer sur Ubuntu ? Facile !
Hors ligne
#5 Le 04/07/2017, à 07:45
- paul18
Re : exec() avec variable
A tous,
Merci pour ces retour; j'ai oublié de préciser que je codais sous python et que je cherche une façon d'introduite une variable pour pointer sur le bon tableau:
- sur le tableau n°i (i de 1 à n), je veux affecter la valeur 100 en [0][0]
- l'idée est d'intégrer ça dans une boucle, puisque je ne connais pas le nombre de tableau (cela dépend de mon fichier initial)
Sur le net j'y ai vu exec(), avec effectivement des alertes quant à son utilisation- je suis preneur de toute suggestion afin de bien faire dès le départ
Paul
Hors ligne
#6 Le 04/07/2017, à 08:06
- pingouinux
Re : exec() avec variable
Tu peux aussi faire ceci :
tab=[]; n=3
for i in range(n): tab.append(np.random.rand(5,1)); print('tab%s\n%s\n'%(i,tab[i]))
i=2
tab[i][0][0]=555; print('tab%s\n%s\n'%(i,tab[i]))
Hors ligne
#7 Le 04/07/2017, à 09:09
- paul18
Re : exec() avec variable
Tu peux aussi faire ceci :
tab=[]; n=3 for i in range(n): tab.append(np.random.rand(5,1)); print('tab%s\n%s\n'%(i,tab[i])) i=2 tab[i][0][0]=555; print('tab%s\n%s\n'%(i,tab[i]))
Merci mais je ne suis pas sûr que cela corresponde à mon besoin - dans l'explorateur des variables, je n'ai que "tab" et "print" ne fait qu'afficher un indice / il ne pointe pas sur le tableau visé.
Pour reprendre l'exemple, les 3 tableaux 'tab' existent, et je veux pointer si tel ou tel tableau dans une boucle pour y affecter des données
(je me suis sûrement mal exprimé)
Paul
Hors ligne
Pages : 1