【问题标题】:how can i avoid generator in python我怎样才能避免python中的生成器
【发布时间】:2019-06-09 12:33:28
【问题描述】:

我想在 python 中绘制一个函数,但我似乎做不到。我正在运行以下代码,但我收到一条错误消息,提示我无法将生成器和浮点数相乘。这是哪里来的?

from math import *
import matplotlib.pyplot as plt
t=0.1
cd=t*exp(-t/2)
tau=10
nt=100
v=0.01
w=0.9
u=0.4
s0=10
p=5

for i in range (1,10):
    sigma= u/(w+(s0/(p*cd)))
    print(sigma)
    C= lambda ksi: cd * (1-exp(((u-w * sigma)/v)*ksi))
    plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])
    plt.xlabel(ksi)
    plt.ylabel(concentration)
    plt.title("tumeur avec regénessence")
    plt.legend()
    plt.show()
    t+=tau/nt

这是我得到的错误

Traceback (most recent call last):
  File "C:\Users\ilyes\Downloads\tumeur_avec_regénesence.py", line 18, in <module>
    plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])
  File "C:\Users\ilyes\Downloads\tumeur_avec_regénesence.py", line 17, in <lambda>
    C= lambda ksi: cd * (1-exp(((u-w * sigma)/v)*ksi))
  TypeError: unsupported operand type(s) for *: 'float' and 'generator'

【问题讨论】:

标签: python python-3.x matplotlib


【解决方案1】:

使用

plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i) for i in range (-10, 0)])

而不是

plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])

说明:您想一次将C 应用于不在孔列表中的每个值。 range(-10,-1) 为您提供值 -10 &lt;= v &lt; -1 但您希望包含 -1。

【讨论】:

    【解决方案2】:

    使用 numpy。

    import numpy as np
    import matplotlib.pyplot as plt
    
    tau=10
    nt=100
    v=0.01
    w=0.9
    u=0.4
    s0=10
    p=5
    
    ksi = np.arange(-10,0)
    
    for t in np.arange(1,10)*tau/nt:
        cd = t*np.exp(-t/2)
        sigma = u/(w+(s0/(p*cd)))
        C = lambda ksi: cd * (1-np.exp(((u-w * sigma)/v)*ksi))
    
        plt.plot(ksi, C(ksi), label=f"t = {t}")
    
    plt.xlabel("ksi")
    plt.ylabel("concentration")
    plt.title("tumeur avec regénessence")
    plt.legend()
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      相关资源
      最近更新 更多