[编辑:已解决,我在代码中的另一个位置使用错误的输入参数调用了相同的函数,从而导致此错误]
我是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)
谢谢您的帮助
答案 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