Python-为什么我的列表索引超出范围错误?

时间:2018-08-21 03:06:22

标签: python list

我正在将变量设置为列表的第i个元素,但是即使在第一次迭代中,我也超出了范围错误。

# code the max() function


def maxinlist(yourlist):
    first = 0
    second = 0
    duplicatelist = yourlist
    for i in range(0, len(yourlist) - 1):
        first = yourlist[i]

        for j in range(len(yourlist) - 1, 0, -1):
            second = yourlist[j]

            if second > first:
                duplicatelist.pop(i)
            elif first > second:
                duplicatelist.pop(j)

    print(duplicatelist[0])


mylist = [1, 4, 8, 2, 5, 100, 44, 2, 5]
maxinlist(mylist)

2 个答案:

答案 0 :(得分:0)

请确保在更改duplicatelist

时要在更改主列表时克隆您的列表

更改以下内容

duplicatelist = yourlist

duplicatelist = yourlist[:]

答案 1 :(得分:0)

在python中,变量名是指针。它们不能反映C或C ++中的实际内存空间。

options: {
    // Assume x axis is the realtime scale
    pan: {
        enabled: true,    // Enable panning
        mode: 'x',        // Allow panning in the x direction
        rangeMin: {
            x: null       // Min value of the delay option
        },
        rangeMax: {
            x: null       // Max value of the delay option
        }
    },
    zoom: {
        enabled: true,    // Enable zooming
        mode: 'x',        // Allow zooming in the x direction
        rangeMin: {
            x: null       // Min value of the duration option
        },
        rangeMax: {
            x: null       // Max value of the duration option
        }
    }
}

这里两个指针指向相同的存储空间。更改一个变量也会影响另一个变量。

duplicateList=yourList

这还将为重复列表创建一个新的内存空间。