Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Copie de tableau en Python
Envoyé par: AlSim

C'est idiot, mais je ne connais pas de moyen de copier intégralement un tableau à plusieurs (ici deux) dimensions en Python autre que de définir à la main une fonction du genre :

def CopieTableau(A):
 T=[]
 for i in A:
   T+=[i[:]]
 return T

N'y a-t-il pas ce genre de fonction directement dans le langage, ou alors un module qui le fasse plus rapidement (surtout si je veux travailler sur de grands tableaux), comme le fait par exemple Numpy avec son type interne "matrice" qui est finalement très semblable ?

Pour ceux qui ne connaissent pas Python et ne verraient pas le problème : si A=[[1,2,3,...],[...],...,[...]] en faisant B=A, Python copie une dimension du tableau, or A[x] est une référence vers un tableau à une dimension et non le tableau lui-même, ce qui fait qu'en pratique modifier B revient ensuite à modifier A. Ce que je veux, c'est laisser A inchangé, donc affecter un nouvel espace mémoire au tableau et le recopier intégralement.

[catwell.info]

Poste le Saturday 13 January 2007 17:50:54
Répondre     Citer    
Re: Copie de tableau en Python
Envoyé par: AlSim

... quand je disais B=A, je voulais bien évidemment dire B=A[:] ! Sinon ça ne copie même pas la première dimension.

[catwell.info]

Poste le Saturday 13 January 2007 17:53:36
Répondre     Citer    
Re: Copie de tableau en Python

Un article sur le deep copy / shallow copy avec pyton [docs.mandragor.org]

Je ne suis pas un spécialiste python( même si j'ai déjà passé quelques heures à le manipuler ) mais ton problème n'est pas spécifique à python car( surtout en python ), tu manipules des objects ( et donc des références ) pour pouvoir copier "profondement" ( copier le contenu de l'object sans l'associer à la meme référence ), tu dois soit utiliser un deepcopy "générique", soit implémenter une interface iclonable ( "maison" )



--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Sunday 14 January 2007 14:49:28
Répondre     Citer    
Re: Copie de tableau en Python
Envoyé par: AlSim

Merci, c'est exactement le genre de module que je cherchais. Je testerai les performances dès que possible.

[catwell.info]

Poste le Sunday 14 January 2007 21:15:08
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Copie de tableau en Python
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons