我在递归函数中尝试在字典中创建一个移位表:
def createShiftTable(alphabet,T,shiftT):
if not T:
for char in alphabet:
shiftT[char] = len(T)+1
return shiftT
else:
return createShiftTable(alphabet,T[1:],shiftT)
shiftT[T[0]] = len(T)
al=['a','b','c','d']
T = "aaabbdddaaba"
print(createShiftTable(al,T,{}))
这将返回{'a': 1, 'c': 1, 'b': 1, 'd': 1}
我希望它返回{'a': 1, 'c': 13, 'b': 2, 'd': 5}
非递归,以下工作正常,但如何让上述递归函数工作?
def createShiftTableX(alphabet,T):
shiftT={}
for char in al:
shiftT[char] = len(T)+1
for i in range(len(T)):
shiftT[T[i]] = len(T)-i
return shiftT
al=['a','b','c','d']
T = "aaabbdddaaba"
print(createShiftTableX(al,T))
答案 0 :(得分:1)
这个怎么样:
def createShiftTableX(alphabet, T):
l = len(T)
for c in alphabet:
i = T.find(c)
if i<0:
yield l
else:
yield i+1
al=['a','b','c','d']
T = "aaabbdddaaba"
print(list(createShiftTableX(al,T)))
答案 1 :(得分:-1)
您应该在调试器中运行它,或者放入一些日志记录或打印语句来查看它实际上在做什么。