【问题标题】:When iterating element throughout a list in some iterations, old elements remain in the new list在某些迭代中在整个列表中迭代元素时,旧元素保留在新列表中
【发布时间】:2023-04-04 19:06:01
【问题描述】:

我正在构建一个用于质点分布的小程序。通过这个循环,我在整个 mass_distr 列表中迭代一个元素 smallest

我从here 尝试了不同的迭代方法。他们都给出相同的结果。对于编码,我使用的是 Jupyter Notebook 并多次重新启动内核。 我对以前迭代中的某些元素在每次迭代中复制时如何保留在新迭代列表mass_distr_i 中感到困惑。

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

数字 15、16、17 和 18 的长度为 mass_distr_i,在这种情况下应始终为 15。

结果:

[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

【问题讨论】:

    标签: python list for-loop iteration


    【解决方案1】:

    我发现了问题。我对结果和输入使用相同的名称:mass_distr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-21
      • 2019-09-11
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2018-07-18
      相关资源
      最近更新 更多