proxy pour une liste

Le
Adrien
Bonjour,

Je cherche à faire la chose suivante:

soit a = [["a","b","c"],[1,2,3],[11,12,13]]

j'aimerais créer la variable p de telle sorte que:
print p donne:
['b', 2, 12] (soit a[n][1] pour n=[0..2] )

et que les modifications de p soient répercutées dans la liste a.

Est-ce que ça existe déjà ou bien faut-il construire une classe
implémentant les méthodes de cette page:
http://docs.python.org/ref/sequence-types.html

Merci.
Adrien
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI
Le #627096
Bonjour !


Je pense que c'est possible uniquement si tes éléments sont eux-mêmes des
listes.

Exemple :

a = [[["a"],["b"],["c"]],[[1],[2],[3]],[[11],[12],[13]]]
p=zip(*a)
print p[1] #donne: [['b'],[2],[12]]
a[1][1][0]"222
print p[1] #donne: [['b'],[22222],[12]]



@+

MCI
Méta-MCI
Le #627095
J'ai oublié de coller la fin :

print a #[[['a'],['b'],['c']], [[1],[22222],[3]], [[11],[12],[13]]]
p[1][1][0]=-222
print a #[[['a'],['b'],['c']], [[1],[-222],[3]], [[11],[12],[13]]]
Méta-MCI
Le #627094
Re !

Ce principe est très utile pour, par exemple, programmer un jeu d'othello
(réversi).
En effet, ça permet de préparer des listes de parcours du damier, pour
chaque case.
Il suffit ensuite de parcourir les 8 listes de chaque case, pour obtenir
quasi-immédiatement le nombre de prises.

J'avais utilisé ce système, lors des concours de l'OI du début des années
80, en ... GWBasic. Ce basic ne permettait pas d'avoir plusieurs variables
pointant sur la même zone mémoire, sauf dans la déclaration de la structure
des enregistrements de fichiers à accès direct (instruction FIELD, si je me
souviens bien). C'était une sorte de mapping. J'ouvrais donc 8 fois un même
fichier, de façon à avoir 8 records (1 par ligne). Mais je n'écrivais jamais
le fichier...

@+

MCI
Adrien
Le #626827
On 24 juin, 11:42, "Méta-MCI"
Bonjour !

Je pense que c'est possible uniquement si tes éléments sont eux-mêm es des
listes.

Exemple :

a = [[["a"],["b"],["c"]],[[1],[2],[3]],[[11],[12],[13]]]
p=zip(*a)
print p[1] #donne: [['b'],[2],[12]]
a[1][1][0]"222
print p[1] #donne: [['b'],[22222],[12]]

@+

MCI


Il faut encore que je comprenne comment ça marche ( zip et *a sont
deux choses que je ne connaissais pas) mais j'aime bien le
résultat ;-)
Merci !

Jonathan Barnoud
Le #626826
Re !

Ce principe est très utile pour, par exemple, programmer un jeu d'othello
(réversi).
En effet, ça permet de préparer des listes de parcours du damier, pour
chaque case.
Il suffit ensuite de parcourir les 8 listes de chaque case, pour obtenir
quasi-immédiatement le nombre de prises.

J'avais utilisé ce système, lors des concours de l'OI du début des années
80, en ... GWBasic. Ce basic ne permettait pas d'avoir plusieurs variables
pointant sur la même zone mémoire, sauf dans la déclaration de la structure
des enregistrements de fichiers à accès direct (instruction FIELD, si je me
souviens bien). C'était une sorte de mapping. J'ouvrais donc 8 fois un même
fichier, de façon à avoir 8 records (1 par ligne). Mais je n'écrivais jamais
le fichier...

@+

MCI



Je vais finir par me demander qui n'a pas écrit de reversi...


Jonathan Barnoud

Laurent Pointal
MC
Le #626824
Re !

En plus, c'est mauvais pour le moral : rapidement, je me faisait
battre, 3 fois sur 4, par mon propre programme...






--
@-salutations

Michel Claveau
Publicité
Poster une réponse
Anonyme