Python 如何引用上一次迭代中的值?

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

对于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()

    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_