python - 函数的嵌套循环
问题描述
我有代码来绘制粒子轨迹,直到填充 3D 矩阵的一部分中的所有空间。这是基于粒子的最终位置。对穿过身体的辐射束中粒子的简化模拟。
我能够使用 for 循环将一大堆粒子轨迹绘制在一起,并获得填充所有空间所需的数量。我是这样做的,'''
n = 100
for n in range(particles):
Path(ax,body)
if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
print('Tumor destroyed after particle number', n)
break
plt.show()
'''
我得到粒子数(n)。但我想循环多次,然后得到填充矩阵中所有空间(破坏肿瘤)所需的平均数(n)。我试着做'''
trials=10
for i in range(trials):
for n in range(particles):
Path(ax,body)
if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
print('Tumor destroyed after particle number', n)
break
''' 但我只是从代码的第一部分获得相同的 n 值 10 次。我如何让它每次都执行新的第一段代码并获得不同的 n 值来平均它们。
if 语句是粒子路径结束的条件。
出来的数字应该都不同,因为我使用随机数进行计算。计算是在 Path 函数内部完成的。我只想多次运行第一个代码片段,但不知道如何执行它。
解决方案
您需要在每次试验中从初始body
(可能)的新副本开始。ax
这些方面的东西:
import copy
# No need to create this more than once.
empty_body = [[[0 for k in range(10)] for j in range(10)] for i in range(10)]
trials=10
for i in range(trials):
test_body = copy.deepcopy(body)
for n in range(particles):
Path(ax, test_body)
if test_body == empty_body:
print('Tumor destroyed after particle number', n)
break
推荐阅读
- gcc - gcc 内联汇编未引用的输入操作数
- macos - 端点安全扩展中的 xpc
- javascript - 当我的 guildDelete 触发时,为什么我的 guildCreate 没有触发?
- sql - Azure SQL:删除具有冗余嵌套引用的用户记录
- angular - 尝试将角度 8 升级到 10 时出错
- php - 如何通过注册表单在我的数据库中写入数据?
- python - 绘制三角形轮廓/曲面 matplotlib python: tricontourf/meshgrid
- java - 在 Java 8 中使用 lambda 表达式从 Hashmap 的 ArrayList 中提取 HashMap
- reactjs - 如果在 ReactJS 中刷新页面,则发出警告
- python - 如何通过 Precision、recall 和 F1-measure 评估模型