【问题标题】:Forming array from for loop output从 for 循环输出形成数组
【发布时间】:2021-10-15 13:43:25
【问题描述】:

我有以下

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]

【问题讨论】:

    标签: python loops for-loop


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

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

      在您的代码中,您打印了nraphson(y, dy, j, 10**-5, 100)result,这是一个包含两个元素的元组。要获取第二个元素,只需使用 [1] 访问它。

      如果您不想打印值但想用这些值创建一个列表,只需执行以下操作:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2023-04-01
          • 1970-01-01
          • 2020-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-20
          • 1970-01-01
          相关资源
          最近更新 更多