【发布时间】: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