【问题标题】:for loop data , iteration and some statistic calculations in pythonpython中的for循环数据、迭代和一些统计计算
【发布时间】:2014-09-16 13:04:11
【问题描述】:

我有 for 循环,它给了我能量值。我想知道如何在 for 循环中执行以下任务;

for i in range(1, 1000): 
    system = moves.move(system, 50, true)
    print("%d: %s" % (i, system.energies()))

1- 我如何将输出能量值存储在数组中或制作列表。例如[E1, E2, E3, E4, E5, ... E1000].

2- 我想取存储数组[E991, E992 ... E1000] 的最后 10 个值的平均值。我将其命名为计算平均值。

3- 现在程序测试计算的平均值(从第 2 步开始)和我在脚本中设置的平均值,如下所示

if calculated_mean <= set_mean 

然后程序继续下一个。

但如果条件不满足,则程序再运行 1000 步,即从 1000 开始的 1001 到 2000 步作为初始点。

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:
    start = 0
    calculated_mean = float('inf')
    while calculated_mean > set_mean:
        energies = []
        for i in range(start, start + 1000): 
            system = moves.move(system, 50, true)
            energy = system.energies()
            energies.append(energy)
            print("%d: %s" % (i, energy))
        calculated_mean = sum(energies[-10:]) / 10
    

    【讨论】:

    • 由于我的能量输出值,我的计算平均线有问题。我在这里贴在我的墙上。这有什么线索吗?
    【解决方案2】:

    注意:range(1, 1000) 包含在左侧但不包含在右侧,因此您的最后一个值将是 999,列表的长度将是 999:

    >>> range(1,1000)[-1]
    999
    >>> len(range(1,1000))
    999
    

    这就是你要问的吗?

    def mean(vals):
        return (sum(vals)/len(vals))
    
    set_mean = *your desired value*
    calculated_mean = None
    energy = []
    
    while (calculated_mean is None) or (calculated_mean <= set_mean):
        for i in range(1, 1000):
            system = moves.move(system, 50, true)
            print("%d: %s" % (i, system.energies()))
            energy.append(system.energies())
        calculated_mean =  mean(energy[-10:])
    

    【讨论】:

    • 与 999 或 1000 无关。我想取循环中最后 10 个合成能量值的平均值。已经有一些建议了。我现在正在尝试它们。如果有问题我会回到这里。我非常感谢所有同事的即时回复。
    • 由于我的能量输出值,我的计算平均线有问题。我在这里贴在我的墙上。这有什么线索吗?
    猜你喜欢
    • 2012-10-27
    • 2023-03-21
    • 2013-10-11
    • 2014-09-17
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2011-09-07
    相关资源
    最近更新 更多