我有一个包含整数的类,另一个列表包含数据。
class Vertex:
def __init__(self, ID = str()):
self.id = ID
self.neighbors = AdjacencyList()
邻接列表是另一个类。它有一个清单。
我想用一个print语句打印邻居中的id和列表。怎么可能?
这是我现在使用的代码(使用字符串连接)
def printGraph(g = Graph()):
msg = str('')
for k, v in g.nodes.iteritems():
root_node = g.nodes[k]
msg = "(" + k + " , " + str(root_node.color) + ") : "
for x in v.neighbors.innerlist:
msg += str(x.id) + " , "
print msg
您可以看到我在print方法中使用的整个字符串分隔符。
答案 0 :(得分:2)
您可以使用str.format()
功能格式化输出: -
print "Id: {0}, Neighbour: {1}".format(self.id, self.neighbours)
这将在Python 2.6+
中有效。对于旧版本,您可能需要使用@ Daniel答案中的那个。
从Python 2.7
,您也可以省略该位置参数,只使用{}
: -
print "Id: {}, Neighbour: {}".format(self.id, self.neighbours)
答案 1 :(得分:2)
您还可以使用字符串格式:
print('id: %s, neigbors: %s' % (self.id, str(self.neighbors)))
答案 2 :(得分:1)
我认为你的代码可以改写如下:
def printGraph(g = Graph()):
for k, v in g.nodes.iteritems():
msg = "({0} , {1}) : {2}".format(k, v.color, ", ".join(["{0}".format(x.id) for x in v.neighbors.innerlist]))
print msg
如您所见,只需一步构建整个字符串的技巧就是用列表解析替换最后的for
循环,该列表解析在适当的位置转换为字符串并包含在初始字符串中。这样,您可以单独打印列表项而不是打印列表对象,因此您可以:
答案 3 :(得分:1)
我没有测试它 - 它有点难以理解,但在一行中它应该是类似
print '\n'.join(('({},{}):{}'.format(key, node.color,
','.join('{}'.format(x) for x in node.neighbors.innerlist))
for key, node in g.nodes.iteritems())