繁体   English   中英

如何在下面的代码中修复“IndexError:list index out of range”

[英]How to fix “IndexError: list index out of range” in the following piece of code

我一直在使用Python 3.7.1运行以下代码o 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:列表索引超出范围

我需要帮助来理解代码中需要更改的内容

看下面是什么问题。

您可以在迭代期间修改数组的长度。

用户设置以删除重复项。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM