2009-01-31 109 views
200

在Python上(名單),我可以這樣做:Python中的string.join對象數組,而不是字符串數組

>>> list = ['a', 'b', 'c'] 
>>> ', '.join(list) 
'a, b, c' 

有沒有簡單的方法做同樣的,當我有對象的列表?

>>> class Obj: 
...  def __str__(self): 
...   return 'name' 
... 
>>> list = [Obj(), Obj(), Obj()] 
>>> ', '.join(list) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sequence item 0: expected string, instance found 

或者我必須訴諸for循環?

回答

301

你可以用一個列表理解或生成器表達式替代:

', '.join([str(x) for x in list]) # list comprehension 
', '.join(str(x) for x in list) # generator expression 
+1

或發電機表達式:「」。加入(str(x)爲列表中的x) – 2009-01-31 00:12:29

+0

對他們哪個更快會有什麼想法? – gozzilli 2012-03-23 13:29:33

63

內置的字符串構造函數會自動調用obj.__str__

''.join(map(str,list)) 
相關問題