使用__str__方法连接python对象列表

发布于 2021-01-29 15:58:23

我已经看过有关用Python表示字符串的问题,但是我的问题略有不同。

这是代码:

>>> class WeirdThing(object):
...     def __init__(self):
...         self.me = time.time()
...     def __str__(self):
...         return "%s" % self.me
...     def __repr__(self):
...         return ";%s;" % self.me
... 
>>> weird_list = [WeirdThing(), WeirdThing(), WeirdThing()]
>>> print weird_list
[;1302217717.89;, ;1302217717.89;, ;1302217717.89;]
>>> "\n".join(weird_list)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: sequence item 0: expected string, WeirdThing found

我意识到这可行:

>>> "\n".join(str(wi) for wi in weird_list)
'1302217717.89\n1302217717.89\n1302217717.89'
>>>

每次避免将对象连接在一起时,最好避免这样做。根本不可能吗?

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您必须先对对象进行字符串化处理才能加入它们。这是因为str.join需要一系列字符串,因此您必须给它提供一系列字符串。

    为了减少打字次数,但会增加可读性,您可以这样做"\n".join(map(str, list_of_things)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看