通过从另一个列表的第n个值中减去第n + 1个值来创建列表

Chu*_*k M 5 python list python-2.7

我需要创建一个列表,它返回另一个列表的第n和第n + 1值之间的差异.有没有办法简化下面的代码以适用于任何大小的列表?

mylist = [1,5,15,30,60]

w = mylist[1] - mylist[0]
x = mylist[2] - mylist[1]
y = mylist[3] - mylist[2]
z = mylist[4] - mylist[3]

difflist = [w,x,y,z]

print difflist
Run Code Online (Sandbox Code Playgroud)

这将回归 [4,10,15,30]

Vas*_* G. 7

看看这个:

mylist = [1,5,15,30,60]

def diff(myList):
    return [myList[i+1] - myList[i] for i in range(len(myList)-1)]

l = diff(mylist)
print(l) 
Run Code Online (Sandbox Code Playgroud)

输出是:

[4, 10, 15, 30]
Run Code Online (Sandbox Code Playgroud)


Kau*_* NP 5

使用zip和list comprehension:

>>> [ a-b for a,b in zip(mylist[1:], mylist[:-1]) ]
=> [4, 10, 15, 30]
Run Code Online (Sandbox Code Playgroud)

#driver值

IN : mylist = [1,5,15,30,60]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您希望使用以下内容遍历列表的旧式老式index:

>>> [ mylist[i+1]-mylist[i] for i in range(len(mylist)-1) ]
=> [4, 10, 15, 30]
Run Code Online (Sandbox Code Playgroud)

虽然,使用zip比遍历它更好,index因为你不需要生成列表,range因为python2并且更像Pythonic.

编辑: 该zip方法也可以仅仅是zip(mylist[1:], mylist[:])