lstという2次元リストがあります。
まず'age','23','33','43'の要素を削除して、次に、'name'がjohnもしくはkaiであったとき、それを要素に持つ1次元リストを削除しようとしています。以下のようにするとエラーとなってしまいました。
どうのように直せばいいでしょうか。
lst = [['age','sex','name'],['23','male','john'],['33','female','mao'],['43','male','kai']] for i in range(len(lst)): del lst[i][0] if lst[i][2] == 'jonh' or lst[i][2] == 'kai': del lst[i] print(lst)
エラー
if lst[i][2] == 'jonh' or lst[i][2] == 'kai':
IndexError: list index out of range
デバッグとかしていないのでしょうか。
コードは「コードの挿入」で記入してください。
失礼しました。
del lst[i][0]までは正常に動くのですが、
if lst[i][2] == 'jonh' or lst[i][2] == 'kai': の2がなぜout of rangeなのかが分かないです。
if lst[i][2] == 'jonh' o
以降をコメントアウトして
del lst[i][0]
の前後で
print(lst)
してみては。
del lst[i][0]の後ろでprint(lst)とすると、[['sex', 'name'], ['male', 'john'], ['female', 'mao'], ['male', 'kai']]と出力され、正常に削除されています。その次に'john'と'kai'を含むlst[1]とlst[3]が削除されることを期待したのですが、なぜかif文の2のindexが範囲外というエラーになってしまします。
回答1件
あなたの回答
tips
プレビュー