首页 > 解决方案 > 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);

我怎样才能做到这一点?

标签: c#

解决方案


如果在for循环中写i <arrivals.Count,问题就解决了。您还可以在 Linq 中使用 Zip 方法。

var delay = departure.Zip(arrivals, (depart, arri) => depart - arri);
            
            foreach (var item in delay)
            {
                Console.WriteLine(item);
            }

推荐阅读