我想定义一个函数,找出满足某些条件的列表的索引。但它总是有一些错误:
TypeError: 'int' object is not iterable
以下是我的代码
def find_index(x,*arr):
for i in len(arr):
if abs(i-x) < 1e-5:
j = arr.index(i)
return j
如何指定arr是列表还是numpy数组? (对不起,我不知道如何在这个编辑器中格式化代码)
非常感谢。
答案 0 :(得分:4)
(第一个)问题是for i in len(arr)
。 len(arr)
返回一个不可迭代的整数。您可能想要使用range(len(arr))
但不要放弃。有更好的选择!我们可以在迭代时跟踪值的索引。通常,此功能可能类似于:
def find_index(x, arr):
for i, val in enumerate(arr):
if abs(val - x) < 1.e-5:
return i
现在你可以在任何 iterable上调用它。 e.g:
find_index(5, [1, 2, 3, 5, 60]) # passing a list
find_index(5, (0, 5+1e-6, 10)) # passing a tuple
答案 1 :(得分:0)
你可以试着喜欢:
l=len(arr)
for i in range(l)
i
返回的是整数值.integer值不可迭代。
答案 2 :(得分:0)
我想你想要替换
for i in len(arr)
使用:
for i in range(len(arr))