def recu(d):
l = []
if d.get('next') is not None:
l.append(d.get('value', None))
l.extend(recu(d['next']))
else:
l.append(d.get('value', None))
return l
def non_recu(d):
l = []
while True:
l.append(d.get('value', None))
d = d.get('next', None)
if d is None:
break
return l
recu(d)
[1, 2, 3, 4]
non_recu(d)
[1, 2, 3, 4]