0

私はPythonとプログラミング全般に不慣れで、現在基礎を学んでいます。以下のスクリプトでは、各リスト要素の文字数を確認し、5 文字以上のものを削除しようとしています。これを実現するために for ループを使用していますが、最初に考慮された for ループの範囲に対応しないリスト要素の数が変更されたため、問題が発生しています。範囲自体を変化させようとしましたが、それでもエラーが発生します。

# -*- coding: utf-8 -*-

magicians =['alice','david','carolina']

def counter(word):
    x= sum (c != ' ' for c in word)
    return x

print magicians
for i in range (0,3):
        magicians[i]=magicians[i].title()
print magicians
q=
Y=range (0,q)

for i in Y:
    x= counter(magicians[i])
    print x    
    if x<=5:
        print 'this component will be deleted:', magicians[i]
        del magicians[i]
        q=q-1
        Y=range (0,q)
print magicians

ありがとうございました

4

2 に答える 2

-1

この投稿には、問題に対する洗練された答えがあります:反復中にリストから項目を削除する

最も簡単な方法は、実際に必要な要素のみを含む新しいリストを作成することです。

于 2016-07-08T13:35:31.560 に答える