【发布时间】:2019-12-24 21:48:41
【问题描述】:
我有一个通用问题,我一直在用 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_filter_function() 以便我可以传入一个变量,这样我就可以测试 att2 的任何值,
printList = filter(t_filter_function('item 2', testObjectList), testObjectList)
【问题讨论】:
标签: python python-3.x filter