这个Python速记是做什么的? {s [:i] + s [i + 1:] for level in中的s范围(len(s))}

时间:2018-08-27 02:35:14

标签: python

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

2 个答案:

答案 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)
    

希望有帮助。