在Java语言中,如果我调用List.toString()
,它将自动对列表中的每个对象调用toString()
方法。例如,如果我的列表包含对象o1
、o2
和o3
,则list.toString()
将如下所示:
"[" + o1.toString() + ", " + o2.toString() + ", " + o3.toString() + "]"
有没有办法在Python中获得类似的行为?我在我的类中实现了一个__str__()
方法,但是当我打印出一个对象列表时,使用:
print 'my list is %s'%(list)
它看起来像这样:
[<__main__.cell instance at 0x2a955e95f0>, <__main__.cell instance at 0x2a955e9638>, <__main__.cell instance at 0x2a955e9680>]
我怎样才能让python自动为列表中的每个元素调用我的__str__()
呢?
发布于 2009-04-07 22:03:00
调用python列表上的string将调用内部每个元素的__repr__
方法。对于某些项目,__str__
和__repr__
是相同的。如果您想要该行为,请执行以下操作:
def __str__(self):
...
def __repr__(self):
return self.__str__()
发布于 2009-04-07 22:03:09
您可以使用list comprehension自动生成包含每个项目str()'d的新列表:
print([str(item) for item in mylist])
发布于 2009-04-07 22:03:48
您可以做两件简单的事情,使用map
函数或使用理解。
但这会得到一个字符串列表,而不是一个字符串。因此,您还必须将这些字符串连接在一起。
s= ",".join( map( str, myList ) )
或
s= ",".join( [ str(element) for element in myList ] )
然后,您可以打印此复合字符串对象。
print 'my list is %s'%( s )
https://stackoverflow.com/questions/727761
复制相似问题