首页 > 解决方案 > 如何输出函数的输入和输出列表?

问题描述

这是我用来评估 y = (exp^(-mu) * mu**N) / (n!) for 0 <= n <= N 的当前 python 代码:

N = 10
mu = 2
n = np.arange(0, N+1)
numerator = (np.exp(-mu)) * mu**n
denominator = factorial(n)
function = numerator / denominator
print('N =', str(N), 'mu =', str(mu))
print('n = {:}'.format(n))
print('function = {:}'.format(function))

我得到的当前输出是:

N = 10 mu = 2
n = [ 0  1  2  3  4  5  6  7  8  9 10]
function = [  1.35335283e-01   2.70670566e-01   2.70670566e-01   1.80447044e- 
01
9.02235222e-02   3.60894089e-02   1.20298030e-02   3.43708656e-03
8.59271640e-04   1.90949253e-04   3.81898506e-05]

我想要的输出是一个列表,而不是一个数组。对于 n 的每个值,我想要函数的相应值。IE:

N = 10 mu = 2
n = 0, function = 1.35335283e-01
n = 1, function = 2.70670566e-01
...
n = 10, function = 3.81898506e-05

我尝试了其他方法,其中大多数都导致了以下TypeError:

    print('n = {:.}'.format(n))

TypeError: non-empty format string passed to object.__format__

我已经设法使用'for'循环让它工作,但我想要一种除了循环之外的方法,因为我试图在不使用任何循环的情况下为大学做练习。有谁知道如何做到这一点?

标签: pythontypeerror

解决方案


您可以将输出压缩在一起,但您需要填充 n 并使用循环运行。为什么是字符串?

n = [0,1,2,3,4,5,6,7,8,9,10]
function = [1.35335283e-01,2.70670566e-01,2.70670566e-01,
            1.80447044e-01,9.02235222e-02,3.60894089e-02,
            1.20298030e-02,3.43708656e-03,8.59271640e-04,
            1.90949253e-04,3.81898506e-05]

zipped = list(zip(n,function))

zipped

Out[ ]:
 [(0, 0.135335283),
 (1, 0.270670566),
 (2, 0.270670566),
 (3, 0.180447044),
 (4, 0.0902235222),
 (5, 0.0360894089),
 (6, 0.012029803),
 (7, 0.00343708656),
 (8, 0.00085927164),
 (9, 0.000190949253),
 (10, 3.81898506e-05)]

而且我同意不允许您使用循环打印是没有意义的要求。

for a,b in zipped:
    print('n =',a,', function =',b)

Out[ ]:
n = 0 , function = 0.135335283
n = 1 , function = 0.270670566
n = 2 , function = 0.270670566
n = 3 , function = 0.180447044
n = 4 , function = 0.0902235222
n = 5 , function = 0.0360894089
n = 6 , function = 0.012029803
n = 7 , function = 0.00343708656
n = 8 , function = 0.00085927164
n = 9 , function = 0.000190949253
n = 10 , function = 3.81898506e-05

推荐阅读