Python 如何引用上一次迭代中的值?
对于x的不同迭代,我试图从当前值中减去前一个值,如果它们之间的差值足够小(可能是0.0001)或其他值,则停止循环 尝试了几种方法,例如将x表示为n的函数,但并不确定如何做到这一点Python 如何引用上一次迭代中的值?,python,Python,对于x的不同迭代,我试图从当前值中减去前一个值,如果它们之间的差值足够小(可能是0.0001)或其他值,则停止循环 尝试了几种方法,例如将x表示为n的函数,但并不确定如何做到这一点 y=int(input('Enter number for cubed root:')) x=1 N=0 D=0 while N < 50: x=1/3*(2*(x) + y/(x**2)) N=N+1 print('Estimation:',x) print() i
y=int(input('Enter number for cubed root:'))
x=1
N=0
D=0
while N < 50:
x=1/3*(2*(x) + y/(x**2))
N=N+1
print('Estimation:',x)
print()
if x(N))==x(N+1):
print('Difference negligible')
break
y=int(输入('Enter number for cubed root:'))
x=1
N=0
D=0
当N<50时:
x=1/3*(2*(x)+y/(x**2))
N=N+1
打印('估计:',x)
打印()
如果x(N))==x(N+1):
打印('差异可忽略不计')
打破
我建议您使用不同的变量来保存上一次循环迭代的值
也许这对你有用:
previous_x = None
while N < 50:
...
if previous_x is not None:
if abs(x - previous_x) < 0.0001:
print('Difference negligible')
break
previous_x = x
previous\u x=None
当N<50时:
...
如果上一个_x不是无:
如果abs(x-先前的_x)<0.0001:
打印('差异可忽略不计')
打破
先前的_x=x
您可以构建自己的迭代器函数,返回当前值和下一个值。类似于以下的方法应该可以工作:
def take_current_and_next(it):
last = None
for current in it:
if last is not None:
yield last, current
last = current
values = list(range(6))
for current, next_ in take_current_and_next(values):
print(current, next_)
其中:
0 1
1 2
2 3
3 4
4 5
如果迭代器可以返回None值,则上述代码将无法按预期工作。以下代码还应处理“无”值:
将其存储在另一个变量中。e、 g.
previousx
您不能神奇地引用上一次迭代中的值。您应该创建另一个变量来跟踪此值。[为什么在我的评论旁边有一个巨大的“删除”链接?我不喜欢这样,我更喜欢小的“x”按钮…]顺便说一句,你有一个额外的、不匹配的括号:x(N))
@ForceBru-Perfect,得到了我想要的,尽管我必须承认我对上一个_x=x为什么出现在最后一行有点困惑?@ColinK否则,如果您在之前设置它,那么差值将为0,因为它当时是完全相同的value@ColinK在最后一行,您将previous_x
的值更改为当前x
的值;在下一次迭代中,x
将改变,但上一次的x
将保持不变(直到迭代结束)。如果您更早地更改上一个\u x,将无法与当前的x
进行比较。在开始时将x设为默认值将使If is not none控件过时,并加快代码速度。只需确保默认值不会影响计算
def take_current_and_next(it):
it = iter(it)
current = next(it)
for next_ in it:
yield current, next_
current = next_