我有一个一般性的问题,我在python中使用列表理解已经有一段时间了,但是我遇到了filter(),在这里可以传入一个定义的函数来过滤对象列表。你知道吗
filteredList = filter(filterfunction, listOfItemsToFilter)
是否也可以传入要测试的属性?你知道吗
class testObject(object):
def __init__(self, att1="", att2="", att3=""):
self.att1 = att1
self.att2 = att2
self.att3 = att3
def t_filter_function(item):
if item.att2 == 'item 2':
return True
else:
return False
def printer(list):
for item in list:
print(item.att1, item.att2, item.att2)
def main():
testObjectList = []
testObjectList.append(testObject(att1='1', att2='item 1', att3='a'))
testObjectList.append(testObject(att1='2', att2='item 2', att3='b'))
testObjectList.append(testObject(att1='3', att2='item 2', att3='c'))
printList = filter(t_filter_function, testObjectList)
printer(printList)
main()
我想做的是扩展函数t\u filter\u function(),这样我就可以传入一个变量,这样我就可以测试att2的任何值
printList = filter(t_filter_function('item 2', testObjectList), testObjectList)
有几个选择。您可以创建一个新函数,该函数接受列表和目标,并筛选与该目标匹配的项:
您可以创建一个函数,返回一个检查与目标相等的函数,然后在
filter
中使用该函数:您可以修改
t_filter_function
以获取一个附加参数,该参数将是您要测试的属性值:然后可以修改
filter
函数:相关问题 更多 >
编程相关推荐