Python:找出列表元素之间的差异

166 投票
12 回答
200474 浏览
提问于 2025-04-15 20:09

给定一个数字列表,怎么找到每个第 i 个元素和它后面第 i+1 个元素之间的差值呢?

使用 lambda 表达式好,还是用列表推导式更好呢?

举个例子:

假设有一个列表 t=[1,3,6,...],我们的目标是找到一个列表 v=[2,3,...],因为 3-1=26-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]

撰写回答