【问题标题】:Problem with "list assignment index out of range" Python“列表分配索引超出范围”Python的问题
【发布时间】:2020-02-16 02:06:10
【问题描述】:

我应该用和作为输入的对象替换元组列表中元组的最后一个元素,我尝试编写此代码,但在第 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

【问题讨论】:

标签: python


【解决方案1】:

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

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

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

【讨论】:

  • 能否请您补充一下错误发生的原因?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 2018-10-21
    • 2019-06-18
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    相关资源
    最近更新 更多