質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3567閲覧

for文内のリスト取り出し時のエラー「list index out of range」の解消

kobayashy_kazu

総合スコア18

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/31 12:58

編集2021/07/31 13:04

###現状の理解度と疑問
エラーの詳細は理解できています(for文内で存在しない要素番号を取得しようとしている)が、なぜその様になるかわかりません。

#取り組んでいること
「リスト内で右隣の要素より大きい要素はいくつあるか」を算出するコードを作成しています。

##詳細
[A,B,C,D]というリストを用意する
このとき
条件1:A > Bであれば、1カウントをする。
条件2:B = Cの場合はカウントされない

とすると

[A,B,C,D]=[21,31,31,32]
のとき
出力は2になる

このようなロジックのコードを作成したいです。

##code

Python

1m =0 2d = int(input()) 3N = [list(map(int, list(input().split()))) for w in range(d)] 4 5N.sort(reverse =True) 6mochis =len(N) 7 8for i , n in enumerate(N): 9 s = i +1 10 print(s) 11 if s > mochis: 12 break 13 14 elif n > N[s]: 15 m = m + 1 16 print(m)

###出力結果

Python

1IndexError: list index out of range 2

###疑問
1つ目のif文で、
「存在する要素番号」よりfor文で「取得する要素番号」が大きくなった場合は処理をbreakするようにしている。

Python

1 if s > mochis: 2 break

しかし、” elif n > N[s]:”でエラー分が発生されます。
この理由をお手数ですがご教示いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

例の場合だと、len(N)は4なのでenumurate(N)のカウンタは最大4。
その場合sはその4に1を足して5。
if s > mochisはif 5 > mochis:だからカウンタが4(つまりsが5)の時は通る。
結果N[5]にアクセスしようとするのでエラー。

という事では?

投稿2021/07/31 13:22

編集2021/07/31 13:26
udon-ken

総合スコア657

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

python

1 if s > mochis:

でsがmochisと等しいときにはどうなるかを考えてください。

投稿2021/07/31 13:19

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問