如何从[列表推导内部]为对象的.ID属性赋值?
class C(object):
def __init__(self):
self.ID=0
l=[C() for i in range(4)]
print l
t=[c for c in l if c.ID+1]
for c in t: print c.ID,
[< main .C对象位于0x10454de50>,< main .C对象位于 0x10454ded0>,< main .C对象位于0x10454df90>,< main .C对象 在0x10455b150>]
0 0 0 0
[以0.1秒完成]
如何使用列表解析更改i
:
l=[i for i in range(4)]
i=0
t=[c for c in l if i++]
print i
答案 0 :(得分:1)
您可以定义一个简单的函数来执行转换:
def foo(c):
c.ID += 1
return c
然后在列表理解中使用它:
>>> t=[foo(c) for c in l]
>>> for c in t: print c.ID,
1 1 1 1
>>> for c in l: print c.ID,
1 1 1 1
请注意,向C
的构造函数添加ID参数可能是个好主意,因此您可以使用任何ID构造C对象:
class C(object):
def __init__(self, ID=0):
self.ID=ID
然后
>>> a = [c(42) for _ in xrange(4)]
>>> b = [c(i) for i in xrange(4)]
>>> for c in a: print c.ID,
42 42 42 42
>>> for c in b: print c.ID,
>>> 0 1 2 3