Python - problemas con las listas linkeadas...

 
Vista:

problemas con las listas linkeadas...

Publicado por David Vazquez (1 intervención) el 12/04/2012 16:14:03
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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']]


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:
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
47
48
49
50
51
52
53
54
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)


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