Agregar valores a una matriz dentro de un objeto (recorrer objetos)

Esta es una versión ordenada deest pregunta. Como cambié tanto hice una nueva pregunta

Estoy tratando de tomar ciertos valores de una matriz más largasolution y colóquelos en una matriz más pequeña, dentro de un objeto. Se supone que este código toma la primera mitad de lasolution array y ponerlo enx_hist dentrom1, y la segunda mitad de lasolution array y ponerlo enx_hist dentrom2. En cambio, parece tomar todas lassolution array y ponerlo enx_hist para ambos objetos. Alguien sabe por qué este puede ser el caso? ¿He accidentalmente vectorizado el código?

class Mass:
    x_hist = []

m1 = Mass()
m2 = Mass()
ms = [m1,m2]

solution = [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0]

for i in range(len(ms)):
    for k in range(int(len(sol)/len(ms))):
        ms[i].x_hist.append(solution[k+8*i])

print(m1.x_hist)
print(m2.x_hist)

La salida es:

[1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0]

Estoy tratando de obtener una salida de:

[1, 2, 3, 4, 5, 6, 7, 8]
[0, 0, 0, 0, 0, 0, 0, 0]

Respuestas a la pregunta(3)

Su respuesta a la pregunta