Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

proxy pour une liste

7 réponses
Avatar
Adrien
Bonjour,

Je cherche =E0 faire la chose suivante:

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

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

et que les modifications de p soient r=E9percut=E9es dans la liste a.

Est-ce que =E7a existe d=E9j=E0 ou bien faut-il construire une classe
impl=E9mentant les m=E9thodes de cette page:
http://docs.python.org/ref/sequence-types.html

Merci.
Adrien

7 réponses

Avatar
Méta-MCI
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
Avatar
Méta-MCI
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]]]
Avatar
Méta-MCI
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
Avatar
Adrien
On 24 juin, 11:42, "Méta-MCI" wrote:
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 !

Avatar
Jonathan Barnoud
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

Avatar
Laurent Pointal
Avatar
MC
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