我在python中编写了一个函数式代码,我不明白为什么它返回一个None而不是代码明确生成的正确值。在Python中的函数式编程:不返回正确的值
此脚本的目的是从CSV中获取line.split(',')并重新组合从'{value1,value2,value3}'无意中拆分为'value1,value2 ...'的所有值。值N”。
def reassemble(list_name):
def inner_iter(head, tail):
if head[0][0] == '{':
new_head = [head[0] + ',' + tail[0]]
if tail[0][-1] == '}':
return [new_head[0][1:-1]], tail[1:]
else:
inner_iter(new_head, tail[1:])
def outer_iter(corrected_list, head, tail):
if tail == []:
print corrected_list + head
return corrected_list + head
else:
if head[0][0] == '{':
head, tail = inner_iter(head, tail)
outer_iter(corrected_list + head, [tail[0]], tail[1:])
else:
outer_iter(corrected_list + head, [tail[0]], tail[1:])
return outer_iter([], [list_name[0]], list_name[1:])
下面是一个测试:
x = ['x','y', '{a', 'b}', 'c']
print reassemble(x)
这是奇怪的结果:
['x', 'y', 'a,b', 'c'] #from the print inside "outer_iter"
None #from the print reassemble(x)
注:我想保持代码的功能作为一个练习。
没有运行代码,我可以看到一些潜在的问题。你的inner和outer_iter函数并不总是返回一个值 – spicavigo 2013-04-25 12:11:18
这个问题是如何“过于本地化”的?我可以理解,我试图将这篇文章与Python对函数式编程的解释分开,可能被误解或可能违反Stackoverflow策略(这是有争议的),但这个问题仍然非常相关 - 请参阅Elazar的文章评论。 – TimY 2013-04-25 22:34:47
这个问题绝对不是“过于本地化”。 – Elazar 2013-04-27 17:05:54