0

I am building a small program for mass point distribution. With this loop, I am iterating an element smallest throughout the mass_distr list.

I have tried different approaches to this iteration from here. They all give the same result. For coding, I am using Jupyter Notebook and have restarted the kernel many times. I am confused with how can some elements from previous iterations remain in new iteration list mass_distr_i when it is copied over every iteration.

for i in range(len(mass_distr)): #Iterate smallest element throughout the list of mass
        
        mass_distr_i = mass_distr[:]  #Position of mass points for i-th iteration 
        #mass_distr_i = mass_distr[:i] + [smallest] + mass_distr[i:]
        print(mass_distr_i, "before insert mass_distr_i")
        
        mass_distr_i.insert(i,smallest)
        #print(mass_distr_i.insert(i,smallest))
        print(mass_distr_i, "mass_distr_i")
        print(len(mass_distr_i))
        
        res = tezisce(mass_distr_i)
        CG = res[0]  #Center of gravity in x and y for i-th iteration
        opt_pos_i = res[1]
        #print(opt_pos_i, "  opt_pos_i")

        abs_dist_CG = np.sqrt(CG[0]**2+CG[1]**2)  #Distance of CG from center
        #print(abs_dist_CG)
        
        if abs_dist_CG < min_CG:
            min_CG = abs_dist_CG  #Minimal distance of CG from center
            CG_xy = CG  #coord. for min_CG
            opt_pos = opt_pos_i  #x and y coord. for mass points for min CG distribution
            mass_distr = mass_distr_i  #Order of mass points for min CG distribution

Numbers 15, 16, 17 and 18 are lengths of mass_distr_i and should be allways 15 for this case.

And the result:

[1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
15
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 1, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 1, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 1, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 1, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 1, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
16
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 1, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
17
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
17
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
18
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 1, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
18
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 1, 3.3, 4.0, 5.0, 6.0, 8.0] mass_distr_i
18
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 4.0, 5.0, 6.0, 8.0] before insert mass_distr_i
[1, 1.0, 2.0, 3.0, 4.0, 4.7, 5.6, 1, 7.6, 1, 2.0, 3.0, 3.3, 1, 4.0, 5.0, 6.0, 8.0] mass_distr_i
18

1 Answers1

0

I found the problem. I am using the same name for the result and for the input: mass_distr

Lucasz
  • 1,150
  • 9
  • 19