在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