搜索列表长度时出错

时间:2019-04-16 15:52:40

标签: python-3.x

[编辑:已解决,我在代码中的另一个位置使用错误的输入参数调用了相同的函数,从而导致此错误]

我是python的新手,经过一番搜索,我决定发布我的问题。

我的函数将* args作为输入:数量可变的列表

在此函数中,我使用for循环读取所有列表,并尝试获取len(each_list)。 然后,我得到错误TypeError:类型为'numpy.float64'的对象没有len()

我试图自己找到问题,但我不理解行为

如果我这样做:

def myfunction(* args):
    for p in args:
        print(isinstance(p, list))
        print(type(p))
        print(p)

我将得到:True +类'list'+ [value1,value2等...

但是如果我添加一行以获取长度(最后一行)

def myfunction(* args):
    for p in args:
        print(isinstance(p, list))
        print(type(p))
        print(p)
        a = len(p)

我会得到:False +类'numpy.float64'+错误(我知道它是不可迭代的)

我将该函数称为:

All_lists = [list1, list2, list3]
myfunction(All_lists)
# I've also tried myfunction(*All_lists)

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

您需要为参数列表的长度执行len(p)

def myfunction(* args):
    for p in args:
        print(isinstance(p, list))
        print(type(p))
        print(p)
        print(len(p))

myfunction([[1,2,3],[4,5,6],[7,8,9] ])
#True
#<class 'list'>
#[1, 2, 3]
#3