0
要素の最大頻度をリスト内で検索しようとしています。PythonリストIndexError:リストインデックスが範囲外にある
今、リストの最後にチェックされた要素([i + 1])にIndexErrorが返されるという問題があります。どうすればこの問題を解決できますか?
len(a)-1では、最後の要素a [i + 1]は決して使用されないため、maxMode(a4)の結果は間違っています。
a1 = [5,3,6,7,2,7,3,6,2,8,7]
a2 = [5,3,6,7,2,7,3,6,2,8,7,5,2]
a3 = [5,3,6,7,2,7,3,6,2,8,2,5,2]
a4 = [5,3,6,7,2,7,3,6,2,7,2,5,1]
def maxMode(a):
cnt = 1
maxCnt = 0
res = 0
for i in range(len(a)-1):
if a[i] == a[i+1]:
cnt += 1
else:
if cnt >= maxCnt:
maxCnt = cnt
res = a[i]
cnt = 1
return res
a1.sort()
a2.sort()
a3.sort()
a4.sort()
print(a1)
print(maxMode(a1))
print(a2)
print(maxMode(a2))
print(a3)
print(maxMode(a3))
print(a4)
print(maxMode(a4))
あなたは配列を持つが、リストで作業されていません。タイトルを修正してください。 –
あなたのコードを修正するのではなく、あなたの情報だけを修正します: 'a1.count(x)'メソッドがあります。ここで 'x'は要素です。要素の出現を数えます。 – Franz
あなたのコードは私にとって完璧に機能します。 – BluCode