我有一个清单。
1 2 3 4 5 6 7
我希望返回连续元素之间的差异列表(增量)。
1 1 1 1 1 1
我该怎么做?
我确信必须有一种简单的“收藏”方式 - 但我找不到它。
答案 0 :(得分:7)
您可以使用Enumerable.Skip
以及投射索引的Enumerable.Select
重载:
List<int> deltaList = list.Skip(1) // skip first, irrelevant
.Select((num, index) => num - list[index]) // index 0 is second number in list
.ToList();
诀窍是Skip(1)
不仅会跳过第一个数字(需要),还会更改Select
中的索引。第一个数字index
将为0,但它将引用列表中的第二个数字(由于Skip(1)
)。因此,num - list[index]
会使用之前的数字减去当前的电流。
答案 1 :(得分:5)
var result = list.Zip(list.Skip(1), (x, y) => y - x);