在Python中使用列表索引值计算列表值更改

在Python中使用列表索引值计算列表值更改,python,Python,我有一份关于年份和失业率的清单: datalist= [[1947, 3.9], [1948, 3.8], [1949, 5.9], [1950, 5.3], [1951, 3.3], [1952, 3.0], [1953, 2.9], [1954, 5.5], [1955, 4.4] . . .] 我可以通过 我希望创建一个新的列表,其中列出去年的失业率和百分比变化。我试着加上 b、 a和c的函数,但我不知道如何使这项工作 def newYear(a): ne

我有一份关于年份和失业率的清单:

datalist= [[1947, 3.9], [1948, 3.8], [1949, 5.9], [1950, 5.3], [1951, 3.3], 
           [1952, 3.0], [1953, 2.9], [1954, 5.5], [1955, 4.4] . . .]
我可以通过

我希望创建一个新的列表,其中列出去年的失业率和百分比变化。我试着加上 b、 a和c的函数,但我不知道如何使这项工作

def newYear(a):
    newList = datalist[:]
    for i in range(len(newList)):
        newList[i][0] += 1

        b = newList[i + 1][1]
        a = newList[i][1]
        c = (b-a)/a * 100

    return newList

试着尽可能地坚持你目前的方法,你可以试试这个。向前看(即使用
x+1
索引)会让事情变得更加困难;列表中的第一年与上一年相比不能有百分比变化。当您到达列表中的最后一项时,还可以使用
范围(len(a))
获得
索引器。因此,更自然的做法是使用
x
,然后向后看一个句点(
x-1


我建议首先使用字典。相关:当比率从5变为8时,你认为会有3%还是60%的变化?@fafl我解释为60%,看起来这就是当前指数方法的作用。
def newYear(a):
    newList = datalist[:]
    for i in range(len(newList)):
        newList[i][0] += 1

        b = newList[i + 1][1]
        a = newList[i][1]
        c = (b-a)/a * 100

    return newList
datalist= [[1947, 3.9], [1948, 3.8], [1949, 5.9], [1950, 5.3], [1951, 3.3], 
           [1952, 3.0], [1953, 2.9], [1954, 5.5], [1955, 4.4]]

def newYear(a):
    new_list = []
    new_list.append([a[0][0], a[0][1], 0]) # No change for first year
    for x in range(1, len(a)):
        year = a[x][0]
        previous_unemployment = a[x-1][1]
        current_unemployment = a[x][1]
        percent_change = ((current_unemployment - previous_unemployment) 
                        / previous_unemployment)*100
        new_list.append([year, current_unemployment, percent_change])

    return new_list

calc_percentages = newYear(datalist)
print calc_percentages