首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python __str__和列表

Python __str__和列表
EN

Stack Overflow用户
提问于 2009-04-07 21:58:00
回答 8查看 105.2K关注 0票数 124

在Java语言中,如果我调用List.toString(),它将自动对列表中的每个对象调用toString()方法。例如,如果我的列表包含对象o1o2o3,则list.toString()将如下所示:

代码语言:javascript
复制
"[" + o1.toString() + ", " + o2.toString() + ", " + o3.toString() + "]"

有没有办法在Python中获得类似的行为?我在我的类中实现了一个__str__()方法,但是当我打印出一个对象列表时,使用:

代码语言:javascript
复制
print 'my list is %s'%(list)

它看起来像这样:

代码语言:javascript
复制
[<__main__.cell instance at 0x2a955e95f0>, <__main__.cell instance at 0x2a955e9638>, <__main__.cell instance at 0x2a955e9680>]

我怎样才能让python自动为列表中的每个元素调用我的__str__()呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-04-07 22:03:00

调用python列表上的string将调用内部每个元素的__repr__方法。对于某些项目,__str____repr__是相同的。如果您想要该行为,请执行以下操作:

代码语言:javascript
复制
def __str__(self):
    ...
def __repr__(self):
    return self.__str__()
票数 156
EN

Stack Overflow用户

发布于 2009-04-07 22:03:09

您可以使用list comprehension自动生成包含每个项目str()'d的新列表:

代码语言:javascript
复制
print([str(item) for item in mylist])
票数 26
EN

Stack Overflow用户

发布于 2009-04-07 22:03:48

您可以做两件简单的事情,使用map函数或使用理解。

但这会得到一个字符串列表,而不是一个字符串。因此,您还必须将这些字符串连接在一起。

代码语言:javascript
复制
s= ",".join( map( str, myList ) )

代码语言:javascript
复制
s= ",".join( [ str(element) for element in myList ] )

然后,您可以打印此复合字符串对象。

代码语言:javascript
复制
print 'my list is %s'%( s )
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/727761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档