Как лучше всего составить односвязный список целых цифр в Python? - PullRequest
1 голос
/ 09 мая 2020

У меня возникли проблемы с созданием односвязного списка, состоящего из 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]

Фрагмент кода ниже:

* 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

1 Ответ

1 голос
/ 09 мая 2020

Что вы хотите сделать, так это извлечь цифры из целого числа. Преобразование его в строку - это решение здесь, потому что тогда вы сможете перебирать символы.

Например,

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

выводит

1
2
3
4
5

Конечно, это приведет к появлению символов для вас, но вы можете легко преобразовать их обратно в целые числа.

Вы также хотите, чтобы ваши цифры были упорядочены от наименее значимых к наиболее значимым. Следовательно, вам нужно перевернуть список.

Итак,

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