python - 函数的嵌套循环

标签 python

我有代码来绘制粒子轨迹,直到 3D 矩阵的一部分中的所有空间都被填充。这是基于粒子的最终位置。对穿过 body 的辐射束中的粒子进行简化模拟。

我能够使用 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

关于python - 函数的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59258020/

相关文章:

python - python列表和字典可以无限嵌套吗?

python如何在不重复的情况下将新对象保存到列表中

python - 查找孤立子集的正确算法是什么

python - 在 python 中保存大型对象图并附加到它的更有效的方法

python - str.title() 和 Mac 上的编码

python - Selenium - 在检查 HTML 之前找不到可见元素?

python - 在 scikit-image 中将轮廓转换为 numpy 数组掩码的有效方法?

python - 在 python 中运行多个 OLS 回归

python - 绘制数据框然后添加垂直线;如何为所有人获取自定义图例文本?

python - Python中的请求解码