📜  Python中的漂亮打印链表(1)

📅  最后修改于: 2023-12-03 15:04:36.842000             🧑  作者: Mango

Python中的漂亮打印链表

在Python中,操作链表是比较常见的任务之一。在输出一个链表时,使用print函数打印出来的结果通常不会非常直观和易读。这时,我们可以使用“漂亮打印”(pretty print)的方法,将链表以更加优美的方式输出出来。下面我们介绍如何使用Python中的pprint模块实现漂亮打印链表。

安装pprint模块

pprint模块是Python自带的标准模块,不需要额外安装。我们可以直接在Python中调用pprint模块进行漂亮打印。

使用pprint模块漂亮打印链表

以下代码展示了如何使用pprint模块打印链表:

import pprint

# 定义链表节点
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 创建链表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)

# 调用pprint模块打印链表
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(head)

上述代码创建了一个链表,并调用pprint模块进行漂亮打印。输出结果如下:

<__main__.ListNode object at 0x7f9c9d062640>

打印结果并不理想,这是因为pprint是面向对象的,它默认不能识别链表这种数据结构,需要我们自己写一个嵌套字典的结构,让它能够被 pprint 识别打印出来。

我们可以使用递归的方式,将链表拆解成嵌套字典,然后再调用pprint模块进行打印。以下是实现代码:

import pprint

# 定义链表节点
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 创建链表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)

# 定义转换函数将链表转换为字典
def to_dict(node):
    if node is None:
        return None
    return {'val': node.val, 'next': to_dict(node.next)}

# 转换链表为字典
d = to_dict(head)

# 调用pprint模块打印链表
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(d)

上述代码创建了一个链表,并调用to_dict函数将链表转换为嵌套字典。然后,再调用pprint模块进行漂亮打印。输出结果如下:

{   'next': {   'next': {'next': None, 'val': 3}, 'val': 2},
    'val': 1}

通过使用pprint模块,我们可以将链表以更加优美和易读的方式输出出来,方便程序员和其他人员观察和理解代码的逻辑。