Python和列表

2024-09-26 18:12:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在Java中,如果我调用List.toString(),它将对列表中的每个对象自动调用toString()方法。例如,如果我的列表包含对象o1o2o3list.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为列表中的每个元素(或dict)自动调用我的__str__()


Tags: 对象方法instance列表maincelljavaat
3条回答

您可以使用list comprehension自动为每个项str()d生成一个新列表:

print([str(item) for item in mylist])

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

但这会得到一个字符串列表,而不是字符串。所以你也必须把这些线连在一起

s= ",".join( map( str, myList ) )

s= ",".join( [ str(element) for element in myList ] )

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

print 'my list is %s'%( s )

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

def __str__(self):
    ...
def __repr__(self):
    return self.__str__()

相关问题 更多 >

    热门问题