Python索引器:列表分配超出范围

2024-04-19 12:28:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写以下代码是为了设计一个算法,返回列表中每个可能子字符串的大小:

def ejercicio2(list):
    vseq = []
    vseq[0:len(list)] = [1]  # Pone valores de la lista a 1

    i = 1
    while i < len(list):
        aux = i - 1
        while aux >= 0:
            if list[i] > list[aux]: # Si el valor de la lista en i es mayor que el de aux
                vseq[i] = vseq[aux] + 1
                break
            aux -= 1
        i += 1
    return vseq

起初,我认为这应该可以正常工作,但每次尝试运行它时,我都会遇到下一个错误:

Traceback (most recent call last):
  File "prac1.py", line 17, in <module>
    ejercicio2([210, 816, 357, 107, 889, 635, 733, 930, 842, 542])
  File "prac1.py", line 10, in ejercicio2
    vseq[i] = vseq[aux] + 1
IndexError: list assignment index out of range

我知道这可能是一个容易解决的问题,但我似乎没有找到解决办法,任何帮助将不胜感激。谢谢


Tags: inpylenlinedeellalist
1条回答
网友
1楼 · 发布于 2024-04-19 12:28:45

vseq[0:len(list)] = [1]不创建长度为len(list)的列表。因为vseq空的,所以赋值片也是空的,但是您可以给它赋值1个元素。这将生成与右侧列表长度相同的列表:

>>> import sys
>>> vseq = []
>>> vseq[0:sys.maxsize] = [1]
>>> vseq
[1]

如果要创建包含所有1值的列表,请使用乘法:

vseq = [1] * len(list)

相关问题 更多 >