我正在处理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'。请指出我错了。
答案 0 :(得分:8)
当你迭代它时,不要修改某些东西。 words.pop(i)
修改words
,您正在通过enumerate()
进行迭代。
我建议看list comprehensions来实现你明显的目标。
答案 1 :(得分:0)
是的,你可能不应该是words.pop()。你想要的词最有可能是s - 将其添加到列表中。
另外,请注意,命名列表“列表”,或多或少会从本地范围中删除“list”内置类型。这不是一种成败的交易,但这是pylint会警告的事情。