C# 两个数字列表之间的逐元素差异

2023-12-03

Assume

List<int> diff(List<int> a, List<int> b)
{ 
    // assume same length lists
    List<int> diff= new List<int>(a.Count);
    for (int i=0; i<diff.Count; ++i)
    {
        diff[i] = a[i] - b[i];
    }
    return diff;
}

我想让某种单行代码做同样的事情,或者使用 lambda 的东西,而不是重写所有的样板文件。

例如,在 python 中,这将是

[ai-bi for ai,bi in zip(a,b)]

or even

np.array(a) - np.array(b)

有没有好的方法用 C# 编写这个?我所有的搜索都找到了删除或添加列表元素的方法,但没有找到有关元素明智操作的信息。


Linq 有一个Zip方法还有:

var diff = a.Zip(b, (ai, bi) => ai - bi);

请注意,代码中的一个潜在错误是:b元素少于a那么当你尝试访问范围之外的元素时,你会得到一个异常b. Zip只会退回物品,只要both集合有项目,这实际上是两个集合长度中较短的一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 两个数字列表之间的逐元素差异 的相关文章

随机推荐