我意识到在定义类时不可能在__new__
中应用list(filter(_,_))
。
但是,可以单独使用过滤器或列表
控制台抛出此错误:
TypeError: 'list' object is not callable
这不起作用:
class test():
def __init__(self):
self.mean = [1,2,3,4]
bool_list=[True,False,True,True]
class tracegrad_set():
def __new__(cls,obj,bool_list):
list(filter(bool_list,obj.mean))
obj.mean= obj.mean[:2]
return obj
a=test()
b=tracegrad_set(a,bool_list)
同时这个
class test():
def __init__(self):
self.mean = [1,2,3,4]
bool_list=[True,False,True,True]
class tracegrad_set():
def __new__(cls,obj,bool_list):
filter(bool_list,obj.mean)
obj.mean= obj.mean[:2]
return obj
a=test()
b=tracegrad_set(a,bool_list)
还是这个
class test():
def __init__(self):
self.mean = [1,2,3,4]
bool_list=[True,False,True,True]
class tracegrad_set():
def __new__(cls,obj,bool_list):
list(bool_list,obj.mean)
obj.mean= obj.mean[:2]
return obj
a=test()
b=tracegrad_set(a,bool_list)
filter
期望第一个参数是可调用的,或者是无(只是过滤掉计算为false的元素);您在那里提供了list
个布尔值,因此当您尝试访问筛选结果时,会引发TypeError
。筛选器试图调用类似bool_list(obj.mean[0])
的内容我只能假设,您希望保留bool列表中索引为
True
的列表元素,使用列表理解更容易实现这一点,例如:或者,如果您坚持使用
map
/filter
,您可以使用以下内容:相关问题 更多 >
编程相关推荐