level = {s[:i] + s[i+1:] for s in level for i in range(len(s))}
我认为这是一样的,但事实并非如此。
for s in level:
for i in range(len(s)):
level = {s[:i] + s[i+1:]}
来源:https://leetcode.com/problems/remove-invalid-parentheses/discuss/75028/Short-Python-BFS
答案 0 :(得分:3)
在功能上等同于:
new_level = set()
for s in level:
for i in range(len(s)):
new_level.add(s[:i] + s[i+1:])
level = new_level
答案 1 :(得分:0)
实现此目标时遇到的问题
RuntimeError:设置迭代期间更改的大小。为避免这种情况,我使用了copy()
功能level.copy()
另外一个,我们不能像清单,dict对象那样在Python中创建一个空的set对象。因此,我们必须将绝对实例化为new_level=set()
new_level=set()
level={"one","two","three"}
for s in level.copy():
for i in range(len(s)):
new_level.add(s[:i] + s[i+1:])
print(new_level)
希望有帮助。