我不太习惯 pyhton,想编写一个函数,将数组 x
作为输入并返回一个仅包含那些数组的数组 (select
)满足特定属性的输入数组的条目,例如在一定范围内。执行此操作的函数如下:
def select(x):
count = 0
select = [] #0
for i in range(0,len(x[0])):
if ( (int(x[4][i])+0.5) > x[4][i] > (int(x[4][i])-0.5) ):
select[0][count]=x[0][i] #1
select[1][count]=x[1][i] #2
select[2][count]=x[4][i] #3
count = count + 1
return select
但是,如果我调用该函数,我会收到以下错误消息:
IndexError: list index out of range
导致它的行是“#1”(我认为接下来的两行也很麻烦)。我想我必须以某种方式定义数组大小。在那种情况下我怎么能在 python 中做到这一点?如我所见,select=[]
是不够的。
亲切的问候
select
最初是一个空列表。您正在尝试为其当前不存在的元素赋值。
可能你需要 select = [[], [], []]
当您尝试在#1、#2 和#3 中分配它们时,select
的内部元素的元素也将不存在
也许这就是你想要的:
def select(x):
select = [[] for i in range(3)] #0 : [[], [], []]
for i in range(0,len(x[0])):
if ( (int(x[4][i])+0.5) > x[4][i] > (int(x[4][i])-0.5) ):
select[0].append(x[0][i]) #1
select[1].append(x[1][i]) #2
select[2].append(x[4][i]) #3
return select
我是一名优秀的程序员,十分优秀!