“列表分配索引超出范围”Python的问题

2024-10-03 19:28:10 发布

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

我应该用和作为输入的对象替换元组列表中元组的最后一个元素,我试图编写这段代码,但在第4行出现了“列表分配索引超出范围”错误。我该怎么修

def replaceLast (tupleList, object):
    for i, tup in enumerate(tupleList):
        lis = list(tup)
        lis[-1] = object
        tupleList[i] = tuple(lis)
    return tupleList

lT=[(1,),(2,3),(),(7,3)]
replaceLast(lT,11) #=> [(11,), (2, 11), (11,), (7, 11)] -> this should be the result

Tags: 对象代码lt元素列表forobjectdef
2条回答

当您有空元组时会生成问题,那么您的变量lst将是一个空列表,因此使用lst[-1]没有意义,这将生成错误,一个简单的修复方法是检查是否为空列表:

if lst:
    lst[-1] = object
else:
    lst.append(object)

问题是列表lT中的空元组没有最后一个元素,因此无法使用lst[-1]访问它

创建新列表,而不是更改列表:

def replace_last(tuples, object):
    return [
        tup[:-1] + (object, )
        for tup in tuples
    ]

相关问题 更多 >