列出Python中的迭代问题

时间:2012-04-10 21:59:46

标签: python

我正在处理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,所以打印i,s给我的值直到'xzz'。请指出我错了。

2 个答案:

答案 0 :(得分:8)

当你迭代它时,不要修改某些东西。 words.pop(i)修改words,您正在通过enumerate()进行迭代。

我建议看list comprehensions来实现你明显的目标。

答案 1 :(得分:0)

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

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