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]
看看这个:
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)
使用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[:])