python - 我可以通过使用循环使迭代变得更容易吗?

标签 python list loops numpy iteration

我对 python 比较陌生,但我在以前制作的程序中使用过循环,但它们相对简单。 我想知道是否有一种方法涉及循环或其他方式来使此迭代更加简洁。

基本上有没有一种方法可以让我拥有一个名为“t”的变量,它像列表一样保存 t1、t2 和 t3 的值,然后在“eq”和“der”中使用该变量,而不是复制和粘贴相同的值一段代码?

我已经尝试在这里和其他地方寻找答案,但到目前为止我找到的解决方案似乎不适用于我所拥有的/我对Python的了解不够,无法理解它们。

import numpy as np
U235_Decay_Constant = 9.72e-10
U238_Decay_Constant = 1.54e-10


t0 = 4.1e9


eq = ((np.exp(U238_Decay_Constant*t0)-1)-(0.0167* 
((np.exp(U235_Decay_Constant*t0)-1)))-0.0094)
der = (U238_Decay_Constant*(np.exp(U238_Decay_Constant*t0)))-(0.0167* 
(U235_Decay_Constant*(np.exp(U235_Decay_Constant*t0))))

t1 = t0 - (eq/der)


eq = ((np.exp(U238_Decay_Constant*t1)-1)-(0.0167* 
((np.exp(U235_Decay_Constant*t1)-1)))-0.0094)
der = (U238_Decay_Constant*(np.exp(U238_Decay_Constant*t1)))-(0.0167* 
(U235_Decay_Constant*(np.exp(U235_Decay_Constant*t1))))

t2 = t1 - (eq/der)

eq = ((np.exp(U238_Decay_Constant*t2)-1)-(0.0167* 
((np.exp(U235_Decay_Constant*t2)-1)))-0.0094)
der = (U238_Decay_Constant*(np.exp(U238_Decay_Constant*t2)))-(0.0167* 
(U235_Decay_Constant*(np.exp(U235_Decay_Constant*t2))))

t3 = t2 - (eq/der)
print(t3)

最佳答案

可能更容易阅读:

import numpy as np
U235_Decay_Constant = 9.72e-10
U238_Decay_Constant = 1.54e-10


t = [4.1e9, None, None, None]

t[0] = 4.1e9
for i in range(3):
    eq = ((np.exp(U238_Decay_Constant*t[i])-1)-(0.0167*
    ((np.exp(U235_Decay_Constant*t[i])-1)))-0.0094)

    der = (U238_Decay_Constant*(np.exp(U238_Decay_Constant*t[0])))-(0.0167*
    (U235_Decay_Constant*(np.exp(U235_Decay_Constant*t[0]))))

    t[i+1] = t[i] - (eq/der)

print(t[3])

关于python - 我可以通过使用循环使迭代变得更容易吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362189/

相关文章:

python - 使用 Python 和 PostgreSQL 进行加密

python - 如何检查列表的元素是否在字符串中

c# - 循环一个类中的所有常量

java - ArrayList<Track> 的排序

c - 优化数组转置功能

javascript - 基于循环迭代设置变量名

python - 比较 2 个 python 列表最多 n-2 个元素

python - 如何将 mock.patch(...).start() 的返回值附加到父模拟?

python - 如何捕获两种不同类型的错误输入

java - Google Foobar 数字站