在下面的代码中如何修复“ IndexError:列表索引超出范围”

时间:2019-06-04 18:17:02

标签: python arrays index-error

我一直在使用Python 3.7.1运行以下代码或Jupyter Notebook 5.7.4。那里工作正常。当我尝试使用python 3.5.2在HPC上运行相同的代码时,我不断收到以下错误。 如果array [i-1] == array [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]

错误 如果array [i-1] == array [i]: IndexError:列表索引超出范围

我需要帮助来了解需要在代码中进行哪些更改

1 个答案:

答案 0 :(得分:0)

请参阅下面的问题。

您可以在迭代过程中修改数组的长度。

用户set以删除重复项。

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]

输出

Remove entry at offset 3

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