class Node(object):
def __init__(self,value=None):
self.value = value
self.next = None
上面的类是节点定义
def number_to_list(number):
head,tail = None,None
p = True
for x in str(number):
if x=='-':
p = False
continue
else:
if p:
node = Node(int(x))
else:
node = Node(int("-"+x))
if head:
tail.next = node
else:
head = node
tail = node
return head
pass
这是将数字转换为链表的代码 例如,
assert [1,2,0] == number_to_list(120)
assert [0] == number_to_list(0)
assert [-1, -2, 0] == number_to_list(-120)
但是,我应该如何从链表转换为数字
def list_to_number(head)
pass
例如,
assert 120 == list_to_number([1,2,0])
assert -120 == list_to_number([-1,-2,0])
我正在尝试过去3天,但我没有遇到任何解决方案请帮助我从这个
答案 0 :(得分:0)
假设列表将包含至少一个数字的负数,
def list_to_number(somelist):
neg=False
num = ''
for number in somelist:
val = str(number)
if (val.find('-')!= -1):
neg = True
num=num+val.replace('-','')
if (neg==False):
return int(num)
else:
return -1*int(num)
希望这很容易理解。
修改强>
我从您的评论中了解到,您有一个链接列表设置而不是列表。那应该不是问题,逻辑应该保持不变。唯一改变的就是你如何迭代,我不能给你的代码,因为那将是你的功课。
答案 1 :(得分:0)
另一种解决方案只是为了变化:
def list_to_number(a_list):
a = ''.join(str(abs(i)) for i in a_list)
if any(n < 0 for n in a_list):
a = '-%s' % a
return int(a)