我的第一个解决方案是这样的,但它没有像我扩展到的那样工作。我的意思是,我想向这个集合中添加一些项目,集合仍然能够遍历剩余的项目和新的项目。例如,如果我已进入e_closure_状态,最后是nums{2,3},在if语句之后将添加数字5,我希望第一个For循环也遍历{2,3}和5。提前谢谢,如果我听不懂,很抱歉
for nextstate in e_closure_statesFinal:
print(nextstate)
for y in range(state,len(self.states)+ 1):
if ((nextstate, '@') in self.transition_function.keys()):
e_closure_statesFinal = e_closure_statesFinal|self.transition_function[(nextstate, '@')]
else :
break
第二个解决方案有效,但我想知道是否有更快的方法
i = 0
while i < len(e_closure_statesFinal):
for nextstate in e_closure_statesFinal:
for y in range(state,len(self.states)+ 1):
if ((nextstate, '@') in self.transition_function.keys()):
e_closure_statesFinal = e_closure_statesFinal |self.transition_function[(nextstate, '@')]
else :
break
i += 1
你明确要求的事情是做不到的;在迭代时修改
set
是被禁止的(即使它有效,Python的set
的本质是新元素可能出现在已经迭代的元素之前或之后,因此它不一致,这也是被禁止的部分原因)。您可以设想运行一个嵌套循环,该循环运行在原始set
的副本上,然后运行结果set
与原始之间的差异,等等。类似于:相关问题 更多 >
编程相关推荐