Ayuda con una Matriz "DIABÓLICA" que hace algo raro!
Publicado por Oscar P.V. (1 intervención) el 30/07/2020 17:29:15
Hola!
Gente ocupa ayuda de los que saben porque estoy iniciando en Python, estoy resolviendo un ejercicio en el que debo programar un algoritmo que analice posibles manos de Poker Texas Holde'm
Tengo esto:
Estoy probando la función pasando estos datos iniciales:
Pero me pasa algo que no entiendo! Aunque sé que las listas son mutables, no entiendo lo que pasa!
Al momento de ejecutarse la instrucción Extend(), se modifica la lista [11,"♥"] para convertirla en [11,"♥", 11,"♣"]. Pero el problema que tengo es que yo quiero que eso pase en la Matriz (Lista de Listas) que se llama Repet, pero en cualquier otra matriz donde está la lista [11,"♥"] también se actualiza!!!
Aporto una imagen de los resultados durante el Debugging
El asunto es que solo quiero modificar la lista [11,"♥"] que está dentro de la matriz Repet, pero se actualiza en TODAS las matrices donde aparece esa lista!!!
OCUPO DE SU ILUMINACIÓN POR FAVOR...
De antemano agradezco toda la ayuda!!!

Gente ocupa ayuda de los que saben porque estoy iniciando en Python, estoy resolviendo un ejercicio en el que debo programar un algoritmo que analice posibles manos de Poker Texas Holde'm
Tengo esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def detJugada (miJug, miMesa):
#Determinar cuál sería la mejor mano de Poker posible
Jugador=[]
cEscalera=[]
colorC=[]
colorF=[]
colorD=[]
colorP=[]
Repet=[] #Repeticiones de valores, Pares, Trios, Quads
contado = False
hayAs=False
jugada=""
#No quiero modificar el contenido de
Jugador.extend(miJug)
Jugador.extend(miMesa)
Jugador.sort()
Jugador.reverse()
cEscalera.append(Jugador[0]) #La lista de escaleras siempre iniciará con un valor en ella!
for c in range(len(Jugador)):
#Contar las figuras, para busacar el flush
if Jugador[c][1]=="♥":
colorC.append(Jugador[c])
elif Jugador[c][1]=="♣":
colorF.append(Jugador[c])
elif Jugador[c][1]=="♦":
colorD.append(Jugador[c])
elif Jugador[c][1]=="♠":
colorP.append(Jugador[c])
#Voy a llevar la cuenta de los valores en otro lado, una lista que cuenta las apariciones de cada valor
if Repet.__len__()==0:
Repet.append(Jugador[c]) #En este caso solo almaceno
else:
for cEm in range(len(Repet)): #cEm = Carta en Mano
if Repet[cEm][0] == Jugador[c][0]:
#******************************************************************
#AQUI EL PROBLEMA
Repet[cEm].extend(Jugador[c]) #Estoy haciendo sublistas de cartas repetidas
#******************************************************************
contado=True
Estoy probando la función pasando estos datos iniciales:
1
2
3
4
ManoPrueba = [[13,"♣"],[12,"♣"]]
MesaPrueba = [[1,"♣"],[11,"♥"],[10,"♣"],[11,"♣"],[8,"♥"]]
detJugada(ManoPrueba,MesaPrueba)
Pero me pasa algo que no entiendo! Aunque sé que las listas son mutables, no entiendo lo que pasa!
Al momento de ejecutarse la instrucción Extend(), se modifica la lista [11,"♥"] para convertirla en [11,"♥", 11,"♣"]. Pero el problema que tengo es que yo quiero que eso pase en la Matriz (Lista de Listas) que se llama Repet, pero en cualquier otra matriz donde está la lista [11,"♥"] también se actualiza!!!
Aporto una imagen de los resultados durante el Debugging
El asunto es que solo quiero modificar la lista [11,"♥"] que está dentro de la matriz Repet, pero se actualiza en TODAS las matrices donde aparece esa lista!!!
OCUPO DE SU ILUMINACIÓN POR FAVOR...
De antemano agradezco toda la ayuda!!!
Valora esta pregunta


0