[Python] problemas con las listas linkeadas...

Iniciado por fallout20xx, 12 Abril 2012, 16:11 PM

0 Miembros y 1 Visitante están viendo este tema.

fallout20xx

Vamos a ver, estoy ultimando una transmision EDI de facturas y hay un detalle que me esta trallendo de cabeza, voy a ir poniendo cada parte del codigo.
Primero tenemos una lista con listas anidadas:
Código (python) [Seleccionar]
[sup]Form119 = [['119',  1,       3,     'A'],
         [None,    4,       3,     'A'],
         [None,    7,       13,    'A'],
         [None,    20,      35,    'A'],
         [None,    55,      35,    'A'],
         [None,    90,      35,    'A'],
         [None,    125,     35,    'A'],
         [None,    160,     35,    'A'],
         [None,    195,     35,    'A'],
         [None,    230,     9,     'A'],
         [None,    239,     35,    'A'],
         [None,    274,     3,     'A'],
         [None,    277,     35,    'A'],
         [None,    312,     35,    'A'],
         [None,    347,     35,    'A'],
         [None,    382,     35,    'A'],
         [None,    417,     35,    'A'],
         [None,    452,     20,    'A'],
         [None,    472,     20,    'A'],
         [None,    492,     20,    'A'],
         [None,    512,     3,     'A'],
         [None,    515,     35,    'A'],
         [None,    550,     51,    'A']][/sup]


ahora tengo que rellenar unos campos y pasarlo a texto plano, esta lista sirve para mantener los formatos durante la construccion del mensaje.
aqui es donde se rellenan:
Código (python) [Seleccionar]
[sup]    def Build_119(self, Vfac):
       Inv_Prt_BYDP = list(Form119)
       Inv_Prt_IV = list(Form119)
       Inv_Prt_SU = list(Form119)
       Respuesta = list()
       Datos = EG.con("""select C_ILN, C_NOM, C_DIR, C_DIRA, COD_CPO, C_POB,
                           C_NIF, C_ILNZ, C_ZON, C_FPR, C_FCP, C_FPO
                           from CLIENTES, VFACTURA
                           where VFACTURA.COD_C = CLIENTES.COD_C
                           and COD_VFA = '%s'""" % Vfac)
       Inv_Prt_BYDP[2][0] = Datos[0][0]
       Inv_Prt_BYDP[3][0] = Datos[0][1]
       Inv_Prt_BYDP[6][0] = Datos[0][2]
       Inv_Prt_BYDP[7][0] = Datos[0][3]
       Inv_Prt_BYDP[9][0] = Datos[0][4]
       Inv_Prt_BYDP[10][0] = Datos[0][5]
       Inv_Prt_BYDP[11][0] = 'DE'
       Inv_Prt_BYDP[14][0] = Datos[0][6]
       
       Inv_Prt_BY =list(Inv_Prt_BYDP)
       Inv_Prt_BY[1][0] = 'BY'
       Respuesta.append(self.The_Builder(Inv_Prt_BY))
       
       Inv_Prt_DP = list(Inv_Prt_BYDP)
       Inv_Prt_DP[1][0] = 'DP'
       Respuesta.append(self.The_Builder(Inv_Prt_DP))
       
       Inv_Prt_IV[1][0] = 'IV'
       Inv_Prt_IV[2][0] = Datos[0][7]
       Inv_Prt_IV[3][0] = Datos[0][8]
       Inv_Prt_IV[6][0] = Datos[0][9]
       Inv_Prt_IV[7][0] = ''
       Inv_Prt_IV[9][0] = Datos[0][10]
       Inv_Prt_IV[10][0] = Datos[0][11]
       Inv_Prt_IV[11][0] = 'DE'
       Inv_Prt_IV[14][0] = 'DE812706034'
       Respuesta.append(self.The_Builder(Inv_Prt_IV))
       
       Datos = EG.con("""select C_ILN, C_NOM, C_DIR, C_DIRA, COD_CPO, C_POB, C_NIF
                           from CLIENTES
                           where COD_C = 'EURAL'""")
       
       Inv_Prt_SU[1][0] = 'SU'
       Inv_Prt_SU[2][0] = Datos[0][0]
       Inv_Prt_SU[3][0] = Datos[0][1]
       Inv_Prt_SU[6][0] = Datos[0][2]
       Inv_Prt_SU[7][0] = Datos[0][3]
       Inv_Prt_SU[9][0] = Datos[0][4]
       Inv_Prt_SU[10][0] = Datos[0][5]
       Inv_Prt_SU[11][0] = 'DE'
       Inv_Prt_SU[14][0] = Datos[0][6]
       Respuesta.append(self.The_Builder(Inv_Prt_SU))

       return '\n'.join(Respuesta)[/sup]


actualmente esta funcionando, pero solo porque voy convirtiendo a texto cada vez que completo una de las copias, como veis al principio de la funcion declaro que 3 ojetos son iguales a la lista anteriormente puesta, pero al acabar la funcion, da igual como lo haga, tanto Form119, Inv_Prt_BYDP, Inv_Prt_IV, Inv_Prt_SU, Inv_Prt_BY y Inv_Prt_DP son identicas, es como si estubiese machando todo el rato Form119... ¿alguien me puede decir como coño me desago del maldito link de las listas? he hecho pruebas en el Pythonwin y supuestamente declarando list(Form119) se elimina el link y puedes madificar cada una por separado, sospecho que al tener listas anidadas hay algo que esta fallando... ¿alguna ayuda?




Elektro H@cker: Usa las etiquetas de código, que para algo están.
si disfrutas siempre que programas... significa que aun no has programado suficiente xD