Как исправить «IndexError: список индексов вне диапазона» в следующем фрагменте кода - PullRequest
0 голосов
/ 04 июня 2019

Я выполняю следующий код o Jupyter Notebook 5.7.4 с Python 3.7.1. Там все работало нормально. Когда я пытался запустить тот же код на HPC с python 3.5.2, я продолжал получать следующую ошибку. если массив [i-1] == массив [i]: IndexError: индекс списка вне диапазона

import vcf
v = vcf.Reader(filename='/scratch/global/kkdesi01/Equine/animals/Chr/Chr11_possibleIntrogressionTargets.vcf')
f = open('/scratch/global/kkdesi01/Equine/animals/Chr/position11.txt', 'w+')
for record in v:
    f.write(str(record.POS))
    f.write('\n')
f.close()

with open('/scratch/global/kkdesi01/Equine/animals/Chr/position11.txt', 'r') as ins:
    array = []
    for line in ins:
        array.append(line)
print(len(array))

f = open('/scratch/global/kkdesi01/Equine/animals/Chr/filter11.txt', 'w+')
for i in range (1, len(array)):
    val1 = int(array [i-1])
    val2 = int(array [i])
    diff = val2-val1
    if diff < 10:
        f.write (str(val1))
        f.write ('\n')
        f.write (str(val2))
        f.write ('\n')
f.close()

with open('/scratch/global/kkdesi01/Equine/animals/Chr/filter11.txt', 'r') as ins:
    array = []
    for line in ins:
        array.append(line)
len(array)

for i in range(1, len(array)):
    if array[i-1] == array[i]:
        del array[i]

ошибка если массив [i-1] == массив [i]: IndexError: индекс списка вне диапазона

Мне нужна помощь в понимании того, что нужно изменить в коде

1 Ответ

0 голосов
/ 04 июня 2019

Смотрите ниже, в чем проблема.

Вы изменяете длину массива во время итерации.

Пользователь установите , чтобы удалить дубликаты.

array = [2, 3, 4, 4, 4]
for i in range(1, len(array)):
    if array[i - 1] == array[i]:
        print('Remove entry at offset {}'.format(i))
        del array[i]

output

Remove entry at offset 3

    if array[i - 1] == array[i]:
IndexError: list index out of range
...