我的数据结构中包含一个'名称'变量。 (为简洁起见,这里简化)
我最终在代码中的不同位置列出了这些对象。
是否有一种简单的方法可以创建一个逗号分隔的字符串,其中包含此对象列表中的所有self.name'
示例:
class myobj(object):
def __init__(self, name):
self.name = name
mylist = [ myobj("foo"), myobj("bar") ]
# I know this is invalid but looking for something along these lines
print "Names=%s" % ",".join(for o in mylist: print o.name)
是否有方便的,"内联"这样做的方式没有使用额外的代码行和临时变量?
答案 0 :(得分:2)
>>> class myobj(object):
... def __init__(self, name):
... self.name = name
...
>>> mylist = [myobj("foo"), myobj("bar")]
>>> ','.join([obj.name for obj in mylist])
'foo,bar'
注意:列表推导在这里比生成器表达式更有效,因为str.join
实现无论如何都会将生成器耗尽到列表中。
答案 1 :(得分:1)
如果为您的班级定义函数__str__
,例如
class myobj(object):
...
def __str__(self):
return self.name
然后你可以简单地说:
','.join(map(str, mylist))