2016-05-17 1 views
0

私は 'name'変数を含むデータ構造を持っています。 (簡略化のため簡略化)オブジェクトのリストのspecifc変数から文字列を生成する効率的な方法

私のコードのさまざまな時点で、これらのオブジェクトのリストが表示されます。

このオブジェクトのリストからすべての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) 

は、コードの余分な行や一時的な変数を使用してW/Oこれを行うのに便利な、「インライン」方法はありますか?

+1

は ' ''(マイリスト中のO用o.name)に参加'それだった – styvane

+0

ああ、私はどこかのようなものに見える知っていました。多くのthx! – BenH

+0

オブジェクトに '__str__'または' __unicode__'メソッドを定義することもできます(クラス定義を制御している場合)。そのため、印刷時に名前を連続して選択する必要はありません。回。 –

答えて

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

クラスに関数__str__を定義すると、たとえば

class myobj(object): 
    ... 
    def __str__(self): 
     return self.name 

その後、あなたは、単に行うことができます。

','.join(map(str, mylist)) 
関連する問題