从对象列表中的特定变量生成字符串的有效方法

时间:2016-05-17 19:49:15

标签: python python-2.7

我的数据结构中包含一个'名称'变量。 (为简洁起见,这里简化)

我最终在代码中的不同位置列出了这些对象。

是否有一种简单的方法可以创建一个逗号分隔的字符串,其中包含此对象列表中的所有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)

是否有方便的,"内联"这样做的方式没有使用额外的代码行和临时变量?

2 个答案:

答案 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))