"googleboy" <[EMAIL PROTECTED]> writes: > for item in all_items: > > strItem = str(item) > > m = re.search(p[i], strItem, flags = re.I) > if m: > height = getattr(item, "height") > length = getattr(item, "length") > function = getattr(item, "function") > print "height is %s, length is %s and function is %s" % height, > length, function > > > This has the limitation of only working over a single search item. I > want to be able to search over an uncontrollable number of search > strings because I will have people wanting to search over 2, 3 or even > (maybe) as many as 5 different things. > > I was thinking that I would try to write a function that created a > sublist of Items if it matched and then run subsequent searches over > the subsequent search strings using this sublist. > > I am not entirely sure how to store this subset of Items in such a way > that I can make searches over it. I guess I have to initialize a > variable of type Item, which I can use to add matching Item's to, but > I have no idea how to do that....(If it was just a list I could say > "sublist = []", what do I use for self defined classes? I Am also > usure how to go about creating a function that will accept any number > of parameters. > > Any assistance with these two questions will be greatly appreciated!
Don't use a real list, use an iterator. Inn particular, itertools.ifilter will take an arbitrary sequence and returns a sequence of items that a function says to. for item in ifilter(lambda i: re.search(p[i], str(i), flags = re.I), all_items): print "height is %s, length is %s and function is %s" % \ (item.height, item.length, item.function) The trick is that ifilter returns a sequence, so you can nest them: for item in filter(filter1, ifilter(filter2, ifilter(filter3, all_items))): ... <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list