0
아래 코드는 travrse_it에서 반환 할 때 전달 된 구조가 수정되지 않은 경우 구조체를 통과하는 것처럼 보입니다. leafs는 불변이므로 반환해야한다고 가정합니다.임의의 구조체의 모든 리프 노드에서 여분의 공백을 제거하는 방법
r = ['crossABC', ['A', 'B', 'C'], ['r n w ', 'r n r ', 'r n n ', 'n w w ', 'n w r ', 'n w n', 'n r w ', 'n r r ', 'n r n ', 'n n w ', 'n n r ', 'n n n ']]
rm_space = lambda x: re.sub('\s+', ' ', x)
def traverse_it(it, str_func):
if (isinstance(it, list)):
for item in it:
traverse_it(item, str_func)
elif (isinstance(it, dict)):
for key in it.keys():
traverse_it(it[key], str_func)
elif (isinstance(it, basestring)):
return str_func(it)
else:
print "Cant travers unkown item"
traverse_it(r,rm_space)
예상 출력 :
이r = ['crossABC', ['A', 'B', 'C'], ['r n w ', 'r n r ', 'r n n ', 'n w w ', 'n w r ', 'n w n', 'n r w ', 'n r r ', 'n r n ', 'n n w ', 'n n r ', 'n n n ']]