Python - Ayuda con una Matriz "DIABÓLICA" que hace algo raro!

 
Vista:
Imágen de perfil de Oscar P.V.
Val: 2
Ha disminuido su posición en 7 puestos en Python (en relación al último mes)
Gráfica de Python

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:

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!!!

Problema-Listas-Python
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder