【问题标题】:What is the best way to make a singly linked list of integer digits in Python?在 Python 中制作单链整数数字列表的最佳方法是什么?
【发布时间】:2020-08-24 14:39:15
【问题描述】:

我无法在 Python 中生成向后整数位的单链表。我得到的输出完全没有意义。

整数如下:

1000000000000000000000000000466

输出应该是:

[6,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]

但是,它是:

[6,6,2,2,4,4,2,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]

代码sn-p如下:

*sum3 是我要转换为列表的整数

*counter3 是位数

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next

        ret = ListNode( sum3%(10) )
        sum3 = int(sum3/10)
        temp=ret
        for i in range(1,counter3):
            temp.next = ListNode(sum3%(10)) 
            temp = temp.next
            sum3 = int(sum3/10)

        return ret

【问题讨论】:

  • counter3 是位数吧?
  • @vbhargav875 是的!
  • 这就是为什么你应该使用 // 而不是 / 和舍入。

标签: python python-3.x linked-list singly-linked-list


【解决方案1】:

您要做的是从整数中提取数字。将其转换为字符串是这里的解决方案,因为这样您就可以遍历字符。

例如,

for c in str(12345):
    print(c)

输出

1
2
3
4
5

当然,这会为您生成字符,但您可以轻松地将它们转换回整数。

您还希望您的数字从最不重要到最重要。因此,您需要反转列表。

所以,

ret = [int(c) for c in str(sum3)][::-1]

【讨论】:

  • 虽然提供纯代码的答案是可以接受的,但如果您还可以提供代码解释并帮助人们理解它解决问题的原因,它通常对社区更有用。这通常会减少后续问题的数量,并且可以真正帮助新开发人员理解底层概念。您介意用更多细节更新您的问题吗?
  • 知道了,谢谢!但是为什么当前输出与整数不同呢?
  • 我不完全确定。这似乎是某种四舍五入的问题。例如,print(int(1000000000000000000000000000466/10)) 给出 99999999999999991433150857216。
  • 在 Python 3 中,您应该使用 // 运算符来进行整数除法。 1000000000000000000000000000466 // 10 正确返回 100000000000000000000000000046。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 2020-01-16
相关资源
最近更新 更多