Я получаю сообщение об ошибке при удалении значения в массиве Python - PullRequest
0 голосов
/ 25 мая 2018

`я получаю сообщение об ошибке, когда запускаю следующий код:

dosya=open("a.txt","r").read()
dosya=dosya.split(" ")
uzun=len(dosya)
sayac=[0 for i in range(len(dosya))]
for i in range(uzun):
    for j in range(i+1,uzun):
        if(dosya[i]==dosya[j]):
            del dosya[j]
            sayac[i]+=1
    sayac[i]+=1
    del dosya[i]
    i+=1
print sayac

`

Erorr: IndexError: список индексов выходит за пределы диапазона

почему?и как я могу это исправить

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

В будущем, пожалуйста, объясните цель вашего кода.Помогает, если вы предоставите пример ввода и какой должен быть вывод.Как указывает @ Learner1947, похоже, вы пытаетесь подсчитать, как часто встречается каждый токен (то есть слово).Это легко сделать с помощью класса collections.Counter.

import collections

dosya = "abc def ghi abc ghi jkl mno def def"
dosya = dosya.split(" ")
counts = collections.Counter(dosya)
print counts
print counts['def']
print counts['abc']

, что дает мне такой результат:

Counter({'def': 3, 'abc': 2, 'ghi': 2, 'jkl': 1, 'mno': 1})
3
2
0 голосов
/ 25 мая 2018
dosya=open("a.txt","r").read()
dosya=dosya.split(" ")
uzun=len(dosya)
sayac=[0 for i in range(len(dosya))]
for i in range(uzun):
    for j in range(i+1,uzun):
        if(dosya[i]==dosya[j] and dosya[i]!=""):
            #del dosya[j]
            dosya[j] = ""
            sayac[i] += 1
    sayac[i] += 1
    #del dosya[i] since you've already parsed it. No need of deleting it.
    #i+=1   Since i will automatically increment.
print sayac

Я думаю, ваша программа состоит в подсчете количества вхождений каждого слова.Плохая логика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...