Python - Problema al crear pares y agregar a lista

 
Vista:
Imágen de perfil de Enrique
Val: 35
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por Enrique (13 intervenciones) el 03/02/2021 23:07:21
Hola gente, tengo un super mega problema a ver si me pueden ayudar

Este es mi codigo para que lo ejecuten:

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
pob = [[0,1,1,0,0,1,0,0,1,0,1,0,1,1], [1,1,1,1,0,0,1,0,0,1,0,0,1,1], [0,1,0,0,1,1,0,1,0,0,0,1,0,0], [0,1,1,0,0,1,0,0,1,0,1,0,1,1]]
#its = 2
punto = 5
 
print("Poblacion original:")
for x in range(0,len(pob)):
	print(f"Individuo {x}: {pob[x]}")
 
ind1 = pob[0]
ind2 = pob[2]
 
print()
print(f"Individuo seleccionado 1: {ind1}; Individuo seleccionado 2: {ind2}")
print()
print(f"Cruzar individuos a partir de la posicion {punto}:")
print()
 
for x in range(punto,len(ind1)):
	aux1 = ind1[x]
	aux2 = ind2[x]
 
	ind1[x] = aux2
	ind2[x] = aux1
 
print(f"Nuevo individuo 1: {ind1}; Nuevo individuo 2: {ind2}")
 
pob.append(ind1)
pob.append(ind2)
 
print()
print("Nueva poblacion:")
for x in range(0,len(pob)):
	print(f"Individuo {x}: {pob[x]}")

Y este es el resultado:

Poblacion original:
Individuo 0: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 1: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
Individuo 2: [0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 3: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]

Individuo seleccionado 1: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]; Individuo seleccionado 2: [0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]

Cruzar individuos a partir de la posicion 5:

Nuevo individuo 1: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]; Nuevo individuo 2: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]

Nueva poblacion:
Individuo 0: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 1: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
Individuo 2: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 3: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 4: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 5: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]

El problemón que tengo es este. Si se fijan, el individuo seleccionado 1 es el individuo 0 y el individuo seleccionado 2 es el individuo 2.

Lo que estoy haciendo es que, a partir de un punto hasta que termina el individuo, debo cambiar los digitos de ambos individuos. Es decir, desde la posicion 5 hasta la 13 del individuo 1, cambiar esos digitos de esas posiciones con los digitos que estan en el mismo rango de posiciones del individuo 2 y viceversa. Y luego, ya una vez que los haya cruzado, agregarlos a lista original hasta el final.

El problemón está en que, no se por que, pero cuando agrego a los nuevos individuos a la lista, los números que fueron tomados originalmente para ser cruzados son iguales a los nuevos individuos, y eso no debe pasar. Los numeros originales deben quedarse como estaban.

Me pueden decir que estoy haciendo mal?
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
sin imagen de perfil
Val: 41
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por David (6 intervenciones) el 04/02/2021 02:22:28
Creo que hay más gente con el mismo ejercicio :)

Siento repetir la respuesta (especialmente si no es acertada) pero creo que tienes que pasar los valores por una variable auxiliar, no puedes hacer:

A=B
B=A

Porque A ha perdido su valor en el momento de dárselo a B
Sería más bien algo como:

Auxiliar = A
A = B
B = Auxiliar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Enrique
Val: 35
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por Enrique (13 intervenciones) el 04/02/2021 03:53:22
Ok, entiendo. Y en mi código como lo implemento, tendría que usar dos auxiliares, una para cada individuo o cómo lo corrijo? Y como se si si hizo el cambio?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique
Val: 35
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por Enrique (13 intervenciones) el 04/02/2021 04:59:35
Ya arregle eso del intercambio pero me sigue dando el mismo resultado.

Yo debo obtener como resultado final esto:

Nueva poblacion:
Individuo 0: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 1: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
Individuo 2: [0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 3: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 4: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 5: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]

Pero en vez de eso, obtengo esto:

Nueva poblacion:
Individuo 0: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 1: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
Individuo 2: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 3: [0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Individuo 4: [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
Individuo 5: [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por joel (901 intervenciones) el 04/02/2021 08:31:13
Hola Enrique segun entiendo, y siguiendo el comentario de David, seria algo así?

1
2
3
4
5
6
7
8
9
10
l0=[0,1,1,0,0,1,0,0,1,0,1,0,1,1]
l2=[0,1,0,0,1,1,0,1,0,0,0,1,0,0]
 
for i in range(5,len(l0)):
    tmp=l0[i]
    l0[i]=l2[i]
    l2[i]=tmp
 
print(l0) # [0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0]
print(l2) # [0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Enrique
Val: 35
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por Enrique (13 intervenciones) el 04/02/2021 15:06:32
Esa parte del código ya la cambie. Lo que pasa es que cuando quiero agregar esas listas nuevas a la lista grande, además de agregar esos me cambia las listas que fueron tomadas para ser cruzadas originalmente, y eso es lo que no quiero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por joel (901 intervenciones) el 04/02/2021 18:29:42
es que no me queda muy claro que listas tienes que intercambiar los datos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 41
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Problema al crear pares y agregar a lista

Publicado por David (6 intervenciones) el 07/02/2021 14:48:03
Supongo que es un ejercicio, comparte el enunciado y lo veremos más claro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar