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)変更します。wordsenumerate()

明らかな目標を達成するために、リスト内包表記を検討することをお勧めします。

于 2012-04-10T22:01:38.217 に答える
0

はい、words.pop() は使用しないでください。必要な単語は s にある可能性が最も高いです - 代わりにそれをリストに追加してください。

また、リストに「リスト」という名前を付けると、ローカルスコープから「リスト」組み込みタイプが多かれ少なかれ消去されることに注意してください。これは成功か失敗かのような取引ではありませんが、pylint が警告するものです。

于 2012-04-10T22:31:52.120 に答える