由for循环输出形成数组



我有以下内容

import math
import matplotlib.pyplot as plt
def nraphson(fn, dfn, x, tol, maxiter):
for i in range(maxiter):
xnew = x - fn(x)/dfn(x)
if abs(xnew - x) < tol: break
x = xnew
return xnew, i
y = lambda x: math.exp(x) - x**2
dy = lambda x: math.exp(x) - 2*x
x, n = nraphson(y, dy, j, 10**-5, 100)
guess = range(-10,6)
for j in guess:
print(nraphson(y, dy, j, 10**-5, 100))

我的输出格式是

(-0.7034674225098828, 6)
(-0.7034674224990228, 6)
(-0.7034674224984084, 6)
(-0.7034674224983918, 6)
(-0.7034674224983917, 6)
(-0.703467422509882, 5)
(-0.7034674224984084, 5)
(-0.7034674224983917, 5)
(-0.7034674224984067, 4)
(-0.7034674224983924, 3)
(-0.7034674224983924, 4)
(-0.7034674224983917, 5)
(-0.7034674224983917, 6)
(-0.7034674224983917, 6)
(-0.7034674224984245, 8)
(-0.7034674224983917, 10)

我试图从我的输出中隔离第二个数字,形成一个列表或数组给我们绘图,我怎么能调整我的代码,给我一个列表或数组像下面?

[6, 6, 6, 6, 6, 5, 5, 5, 4, 3, 4, 5, 6, 6, 8, 10]

试试这个:

...
guess = range(-10,6)
result = [nraphson(y, dy, j, 10**-5, 100)[1] for j in guess]
print(result)

如果你只想打印第二个值,在for循环的末尾:

for j in guess:
print(nraphson(y, dy, j, 10**-5, 100)[1])
在您的代码中,您正在打印nraphson(y, dy, j, 10**-5, 100)结果,这是一个具有两个元素的元组。要获得第二个元素,只需使用[1]访问它。

如果你不想打印这些值,但想用这些值创建一个列表,只需这样做:

tuples = [nraphson(y, dy, j, 10**-5, 100) for j in guess]
second_nums = [t[1] for t in tuples]

将代码的最后两行替换为:

L = [nraphson(y, dy, j, 10**-5, 100)[1] for j in guess]
print(L)

最新更新