从for循环输出形成阵列

2024-09-30 01:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几点

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]


Tags: lambdainimport列表forrangemathfn
3条回答

如果您只想打印第二个值,请在末尾的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)

试试这个:

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

相关问题 更多 >

    热门问题