首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么调用此函数两次会导致错误?

为什么调用此函数两次会导致错误?
EN

Stack Overflow用户
提问于 2015-01-20 20:49:24
回答 2查看 183关注 0票数 0

我在调用一个函数两次时遇到了问题。如果我注释最后3行并保留show(),我不会收到任何错误,事情就会按预期进行。但是,如果我不注释掉它们,再次调用最后一个函数会产生以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "second_1.py", line 29, in <module>
    domega=c_d(len(t),t,z)
  File "second_1.py", line 25, in c_d
    dy[1:-1]=(y[2:]-y[0:-2])/(x[2:]-x[0:-2])
TypeError: unsupported operand type(s) for -: 'list' and 'list'

下面是函数:

代码语言:javascript
复制
import numpy as np
from pylab import *
import time

t_initial=time.time()
clf()
t,hp,hn= np.loadtxt("Richardson.dat", usecols=(0,1,2),comments='#', unpack=True)     # to select just a few columns
print(time.time()-t_initial)  

def phi(y,x):
    return(np.arctan(y/x))

phase=[0.0]*len(t)
phase=phi(hp[0:],hn[0:])
#plot(t,phase)
#show()    

def c_d(order,x,y):
    dy=[0.0]*order
    dy[0]=(y[1]-y[0])/(x[1]-x[0])
    dy[-1]=(y[-1]-y[-2])/(x[-1]-x[-2])
    dy[1:-1]=(y[2:]-y[0:-2])/(x[2:]-x[0:-2])
    return(dy);
    z=c_d(len(t),t,phase);
    plot(t,z)
    print(len(z)-len(t))
    domega=c_d(len(t),t,z)
    plot(t,domega)
    show()
EN

回答 2

Stack Overflow用户

发布于 2015-01-20 20:59:32

这个问题在错误消息中解释得非常清楚:'-‘操作数不适用于类型列表。

代码语言:javascript
复制
(y[2:]-y[0:-2])/(x[2:]-x[0:-2])

y2:对列表进行切片并返回列表。y0:-2也对列表进行切片并返回列表。所以你有两个列表。

代码语言:javascript
复制
y[2:] (a list)   -(your operator)   y[0:-2] (a list)

并且没有定义list - list (没有语法:'listObject‘- 'listObject')。

但是:+运算符是为列表定义的(示例):

代码语言:javascript
复制
l = ["ja"]
m = ["nein"]

n = l + m

print n
# output: ['ja', 'nein']

在这里看看这些不同类型的可能运算符:https://docs.python.org/2/library/stdtypes.html

票数 1
EN

Stack Overflow用户

发布于 2015-01-20 21:07:40

正如Cyber和ProgrammingIsAwsome所说的,错误是在线的

代码语言:javascript
复制
(y[2:]-y[0:-2])/(x[2:]-x[0:-2])

在那里你实际尝试减去列表。

你可以明确地写:

代码语言:javascript
复制
for i in range(1, order - 1):
    dy[i]=(y[i+1]-y[i-1])/(x[i+1]-x[1-1])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28045804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档