1

我正在处理遇到此问题的 Google Python 课程练习 -

def front_x(words):
  # +++your code here+++
  list = []
  for i,s in enumerate(words):
    print i,s
    if s[0] == 'x':
        list.append(words.pop(i))
  return list

print front_x(['bbb','ccc','axx','xzz','xaa'])

我的循环只从 0 迭代到 3,所以 print i,s 给我的值直到 'xzz'。请指出我错的地方。

4

2 回答 2

8

不要在迭代时修改某些内容。words.pop(i)修改words,您正在通过enumerate().

我建议查看列表推导以实现您的明显目标。

于 2012-04-10T22:01:38.217 回答
0

是的,您可能不应该使用 words.pop()。您想要的单词最有可能在 s 中 - 将其添加到列表中。

另外,请注意,将列表命名为“列表”,或多或少会从本地范围中删除“列表”内置类型。这不是一种成败的交易,但它是 pylint 会警告的。

于 2012-04-10T22:31:52.120 回答