Daniel Nogradi wrote:
Is looping over a list of objects and modifying (adding an attribute
to) each item only possible like this?
mylist = [ obj1, obj2, obj3 ]
for i in xrange( len( mylist ) ):
mylist[i].newattribute = 'new value'
I'm guessing there is a way to do this without introducing the (in
principle unnecessary) index i, so what I'm really looking for is a
looping method which doesn't pass references to the values of the
items but to the items themselves.
You can use map, or if you don't map, like list comprehension:
pyclass B(object):
.... def __repr__(self):
.... return '<B>: %s' % self.value
.... def __init__(self):
.... self.value = None
....
pyalist = [B() for i in xrange(5)]
pyalist
[<B>: None, <B>: None, <B>: None, <B>: None, <B>: None]
py[setattr(b,'value',v+5) for (v,b) in enumerate(alist)]
[None, None, None, None, None]
pyalist
[<B>: 5, <B>: 6, <B>: 7, <B>: 8, <B>: 9]
pymap(setattr, alist, ['value']*5, xrange(5))
[None, None, None, None, None]
pyalist
[<B>: 0, <B>: 1, <B>: 2, <B>: 3, <B>: 4]
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/