带参数列表的python函数

时间:2015-05-28 06:03:50

标签: python arrays list numpy

我想定义一个函数,找出满足某些条件的列表的索引。但它总是有一些错误:

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数组? (对不起,我不知道如何在这个编辑器中格式化代码)

非常感谢。

3 个答案:

答案 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))