gpt4 book ai didi

python - 如何从数字的数字生成单链表?

转载 作者:行者123 更新时间:2023-12-01 07:29:44 24 4
gpt4 key购买 nike

我定义了一个类来制作链表,如下所示:

class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None

现在,我生成了一个数字“sum”,并编写了以下代码来生成链接列表:(假设 sum 可能有 3 或 4 位数字)

if len(str(sum)) == 4:
l3 = ListNode(str(sum)[3])
l3.next = ListNode(str(sum)[2])
l3.next.next = ListNode(str(sum)[1])
l3.next.next.next = ListNode(str(sum)[0])
elif len(str(sum)) == 3:
l3 = ListNode(str(sum)[2])
l3.next = ListNode(str(sum)[1])
l3.next.next = ListNode(str(sum)[0])

是否有一种方法可以使用数字“sum”的长度来生成上述内容,而无需如上所述进行硬编码?

最佳答案

你可以这样做:

s = str(975)

start_node = node = ListNode(s[-1]) # initialize to last character in s
for c in reversed(s[:-1]):
node.next = ListNode(c)
node = node.next

start_node 现在应该包含第一个节点;从那里你可以 .next 到下一个节点。 node 始终指向循环中的当前节点(并且可以在循环后被丢弃)。

请注意sum是一个内置函数,因此不是一个好的变量名...

上面代码的输出:

print(start_node.val)             # 5
print(start_node.next.val) # 7
print(start_node.next.next.val) # 9
print(start_node.next.next.next) # None
<小时/>

您甚至可以将上面的代码编写得更紧凑(但在我看来可读性较差):

start_node = node = ListNode(s[-1])
for c in reversed(s[:-1]):
node.next = node = ListNode(c)

关于python - 如何从数字的数字生成单链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57265890/

24 4 0
文章推荐: python - 在 python 中,我无法以文本格式导出输出
文章推荐: regex - 如何判断 Perl 正则表达式模式中匹配的替代项?
文章推荐: javascript - 如何访问 `
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com