>De: Francesc Gispert Sanchez <francesc_gispert_11...@hotmail.com> >Para: python-es@python.org >Enviado: jue,4 agosto, 2011 19:15 >Asunto: [Python-es] Problema con listas duplicadas > >Hola, estoy aprendiendo a programar en Python y he intentado hacer una >versión del juego de mesa 'Othello' sólo con texto. Pero mi problema >esque la función que cambia las piezas blancas por negras y viceversa no >funciona, y tras muchas horas probando cosas, me parece que el problema >viene de la función que duplica la matriz (una lista de listas) que >representa el tablero. > >Esto se puede observar gracias a lo que imprimen las líneas 164 y 165 >del archivo .py; concretamente la 165. Esta línea debería mostrar todo >el rato el mismo tablero (lista) exacto, puesto que no hay nada dentro >de la función 'giraFitxes' (giraFichas) que lo modifique. Pero éste va >adoptando los mismos valores que el tablero provisional que utilizo para >girar las fichas (el que imprime la línea 164). Por eso, deduzco que >cuando creo un tablero provisional con la función >'duplicaTauler' (duplicaTablero) no se crea una lista nueva, sino que la >nueva variable es sólo otra referencia al tablero principal. > >Además de ésta forma de duplicar el tablero, lo he probado con la >función descrita en 'http://challenges.qumax.org/?p=351', pero tampoco >ha funcionado. También lo he intentado con un bucle que recorriera las >filas y, dentro de éste, 'duplicado = tablero[fila][:]', pero no hay >forma. Es muy probable que, además de esto, haya algún otro fallo en el >código, pero si es así no me he percatado por culpa de éste que comento. > >Entonces, ¿cómo debería hacerlo para crear un tablero provisional con >los mismos valores que el tablero original sin que, al modificarlo, se >modifique también el original? > > >El programa (las variables, los comentarios, etc.) está en catalán, >espero que no sea una molestia; si lo es, os lo puedo traducir. No sé si >es relevante, pero utilizo Python 2.6.7 en Debian Wheezy (testing). > >Muchas gracias por adelantado. > > >Francesc Gispert
Buenos días, para duplicar el tablero original puedes utilizar deepcopy del módulo copy: http://www.python.org/doc//current/library/copy.html Un saludo, Luis
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/