我正在尝试实现转换功能。我已将转换存储在列表中:
def transistion(self, input):
self.currentState = 'q1'
self.delta = "[['q1', '0', 'q2'], ['q1', '1', 'q1']]"
k = ast.literal_eval(self.delta)
delta_list = [[x[0],tuple(x[1:])] for x in k]
print(delta_list)
print(delta_list) # [['q1', ('0', 'q2')], ['q1', ('1', 'q1')]]
我需要:
答案 0 :(得分:1)
为了让你开始,这个
def transistion(self, input):
self.currentState = 'q1'
self.delta = "[['q1', '0', 'q2'], ['q1', '1', 'q1']]"
k = ast.literal_eval(self.delta)
delta_list = [[x[0],tuple(x[1:])] for x in k]
print(delta_list)
可以更简单地完成:
def transistion(self, input):
self.currentState = 'q1'
self.delta = eval("[['q1', '0', 'q2'], ['q1', '1', 'q1']]")
delta_list = [[x[0],tuple(x[1:])] for x in self.delta]
print(delta_list)
但为什么要打扰,除非这是一个测试工具?您可以将delta_list设置为您想要的 - 即使在测试工具中
delta_list = [['q1',('0','q2')],['q1', ('1', 'q1')]]
此时,它是一个基本的循环:
for t in delta_list:
if self.current_state == t[0]:
# rest of checks and actions. break if you change current state
但是为什么要打扰元组呢?您可以使用原始列表列表