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(使用前将#替换为@)