On Sat, 31 Dec 2005 09:01:44 -0800, MKoool wrote: > Hi everyone, > > I am doing several operations on lists and I am wondering if python has > anything built in to get every member of several objects that are in an > array, for example, if i have a class like the following: > > class myClass: > a = 0.0
Did you mean for a to be a class attribute? You possibly want something like this: class myClass: def __init__(self, value=0.0): self.a = value # "a" for attribute Then you can create new instances: fred = myClass(2.7) wilma = myClass() # just use the default betty = myClass(1.3) barney = myClass(0.9) > And lets say I populate the "a" element in an array of objects of > myClass. If I want to retrieve all items in this and perhaps give it > to a mean function, I would need to make a loop now: > > mySimpleArray = [] > for i in range(0,len(myArray)): > mySimpleArray.append(myArray[i].a) > > There must be some more efficient way to do this, can someone point me > to the right direction so that I can review some documentation and get > things a little more efficient? myArray = [fred, wilma, betty, barney] mySimpleArray = [] for person in myArray: mySimpleArray.append(person.a) Or try this: mySimpleArray = [person.a for person in myArray] Or this: def mean_value(*people): """Takes a list of people and returns the mean of their attributes""" total = 0.0 for person in people: total += person.a return total/len(people) mean_value(fred, betty, barney, wilma) That last version is not recommended, because it requires a separate function for everything you want to calculate. For instance, if you add a second attribute "height" to myClass, and want to work out the mean height, you would need a second function to do it. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list