Python:找出列表元素之间的差异
给定一个数字列表,怎么找到每个第 i
个元素和它后面第 i+1
个元素之间的差值呢?
使用 lambda
表达式好,还是用列表推导式更好呢?
举个例子:
假设有一个列表 t=[1,3,6,...]
,我们的目标是找到一个列表 v=[2,3,...]
,因为 3-1=2
,6-3=3
,等等。
12 个回答
43
如果你不想使用 numpy
或者 zip
,你可以试试下面这个方法:
>>> t = [1, 3, 6]
>>> v = [t[i+1]-t[i] for i in range(len(t)-1)]
>>> v
[2, 3]
151
其他的回答都是对的,但如果你在做数字计算的话,可以考虑使用numpy。用numpy的话,答案是:
v = numpy.diff(t)
202
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。
通常,解决这类问题的第一步是仔细检查我们写的代码,看看有没有拼写错误或者用错了方法。因为在编程中,一个小小的错误就可能导致整个程序无法正常运行。
如果代码看起来没问题,接下来可以查阅相关的文档或者社区论坛,看看有没有其他人遇到过类似的问题。很多时候,别人已经解决了同样的问题,分享了他们的经验和解决方案。
另外,调试工具也是一个很好的帮手。它可以帮助我们一步一步地检查代码的运行情况,找出问题所在。
总之,遇到问题时不要着急,慢慢分析,查找资料,通常都能找到解决办法。
>>> t
[1, 3, 6]
>>> [j-i for i, j in zip(t[:-1], t[1:])] # or use itertools.izip in py2k
[2, 3]