文字列配列ではなくオブジェクト配列のstring.join(list) 質問する

文字列配列ではなくオブジェクト配列のstring.join(list) 質問する

Python では次のことができます:

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 ループに頼らなければなりませんか?

ベストアンサー1

代わりに、リストの内包表記またはジェネレータ式を使用することもできます。

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

おすすめ記事