c# - C#中元素长度未知的两个列表的元素相减
问题描述
我的程序中有两个列表的长度不相等。我想逐个元素地减去这两个列表的成员并将它们保存在一个列表中。
List<double> arrivals = new List<double>();
List<double> departure = new List<double>();
List<double> delays = new List<double>();
double departure_p = 0.8;
double arrival_p = 0.45;
int slot = 0;
while (slot < 1000)
{
Random a = new Random();
double arrival_t = a.NextDouble();
Random d = new Random();
double departure_t = d.NextDouble();
if (departure_t <= departure_p)
{
departure.Add(departure_t);
}
if (arrival_t <= arrival_p)
{
arrivals.Add(arrival_t);
}
slot++;
}
当我使用这种方法时,我遇到了异常 system.IndexOutOfRangeException。
for (int i = 0; i <= arrivals.Count; i++)
{
delays.Add(departure[i] - arrivals[i]);
}
foreach (var item in delays)
Console.WriteLine(item);
我怎样才能做到这一点?
解决方案
如果在for循环中写i <arrivals.Count,问题就解决了。您还可以在 Linq 中使用 Zip 方法。
var delay = departure.Zip(arrivals, (depart, arri) => depart - arri);
foreach (var item in delay)
{
Console.WriteLine(item);
}
推荐阅读
- raku - 如何解决“此 Seq 的迭代器已在使用中”?
- r - 为什么这段代码会遇到问题,我如何计算 (y_t, y_(t+h)) 的协方差和相关性
- java - 在实体内的数组属性中查找可比较的值
- python - 评估线性搜索执行速度
- r - 创建一个使用字符串和作为变量调用列的函数 - 使用基本 R 和 dplyr
- c++ - C++ 并发队列内存泄漏
- apache - Apache 反向代理中的 Google OAuth 重定向 Uri
- python - 使用python解析Javascript页面
- matlab - 为什么我在 GitHub 上的一个代码预览看起来像纯文本?
- css - Google Webfonts 破坏 CLS 分数 (FOUT)