在Java中,如果我调用List.toString(),它将自动调用List内每个对象的toString()方法.例如,如果我的列表包含对象o1,o2和o3,则list.toString()将如下所示:
"[" + o1.toString() + ", " + o2.toString() + ", " + o3.toString() + "]"
Run Code Online (Sandbox Code Playgroud)
有没有办法在Python中获得类似的行为?我在我的类中实现了__str __()方法,但是当我打印出一个对象列表时,使用:
print 'my list is %s'%(list)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
[<__main__.cell instance at 0x2a955e95f0>, <__main__.cell instance at 0x2a955e9638>, <__main__.cell instance at 0x2a955e9680>]
Run Code Online (Sandbox Code Playgroud)
如何让python自动为列表中的每个元素调用我的__str__(或者dict为此)?
Dav*_*ger 128
在python列表上调用字符串会调用__repr__内部每个元素的方法.对于某些项目,__str__并且__repr__是相同的.如果您想要这种行为,请执行:
def __str__(self):
...
def __repr__(self):
return self.__str__()
Run Code Online (Sandbox Code Playgroud)
Dan*_*Lew 21
您可以使用列表推导来自动生成每个项目str()的新列表:
print([str(item) for item in mylist])
Run Code Online (Sandbox Code Playgroud)
您可以做两件简单的事情,使用该map功能或使用理解.
但这会得到一个字符串列表,而不是字符串.所以你还必须将字符串连接在一起.
s= ",".join( map( str, myList ) )
Run Code Online (Sandbox Code Playgroud)
要么
s= ",".join( [ str(element) for element in myList ] )
Run Code Online (Sandbox Code Playgroud)
然后,您可以打印此复合字符串对象.
print 'my list is %s'%( s )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86228 次 |
| 最近记录: |