如何生成在起始数字上加5的数字列表

本文关键字:数字 列表 数字上 何生成 | 更新日期: 2023-09-27 18:25:02

这是一个简单的问题,但要确保我做得正确!

我想生成一个数字列表,其中我从数字3开始,并在下一个数字上加5。

结果应该是这样的:

var list = new List<int> { 3, 8, 13, 18, 23, 28 ..... 103 };

我的代码:

var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 1000; i++) 
{ 
   uniqueInts.Add(addBy); 
}

我试得对吗?还是有什么简单的方法?

如何生成在起始数字上加5的数字列表

for循环索引增加5而不是1。

for (int i = 3; i < 10000; i += 5) 
{ 
   uniqueInts.Add(i); 
}

为了进行比较,这里有一种使用Linq的方法。在这种情况下,我想我更喜欢你的循环:)

var list = Enumerable.Range(0, 21).Select(x => x*5+3).ToList();

编辑:不确定你下面关于想要输出为"var list=…"的评论是什么意思,但如果你想要字符串(即源代码)作为输出,你可以使用Linq聚合;

string str = Enumerable.Range(0, 21).
    Aggregate(new StringBuilder("var list = new List<int> {"), 
    (builder, i) => builder.Append(i*5+3 + ", ")).Append("};").ToString();
Console.WriteLine(str);

您可以尝试以下操作:

IList<int> uniqueInts = new List<int>();
for (int i = 3; i < 10000; i+=5)
{
   uniqueInts.Add(i);
}

当然,你必须定义一个上限,因为i<10000只会给你(10000/5)-1个数字。

更改您的增量:

i += 5

因此,应用:

for (var i = 3; i < 10000; i += 5){
    uniqueIds.Add(i);
}
// 3, 8, 13, 18, 23, ...

假设这就是你的意思,但你的问题有点模棱两可

除非你想在列表中的每个数字上加5,在这种情况下:

var list = new List<int> { 3, 8, 13, 18, 23, 28 ..... 103 };
var uniqueIds = new List<int>();
foreach (var n in list)
{
    uniqueIds.Add(n + 5);
}
// 8, 13, 23, 33, ...

首先,如果您想知道自己做得是否正确,请在新的控制台项目中自己测试并调试它。
其次您的代码将生成一个{5, 5, 5, 5...}列表
你应该做的是:

var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 1000; i += addBy)
{ 
   uniqueInts.Add(i); 
}

这样,在每个循环结束时,i将始终增长5,并且它将被添加到列表中
如果你想要的话,这将给你3到1000之间的所有结果,跳跃5次。

您可以尝试以下操作:

class Program
{
    static void Main(string[] args)
    {
        List<int> numList = new List<int> { 3 };
        for (int i = 0; i < 100; i++)
        {
            Console.WriteLine(numList[i]);
            numList.Add(numList[i] + 5);
        }
        Console.Read();
    }
}

您的代码是错误的,每次都会添加数字5

相反:

var uniqueInts = new List<int>();
addBy = 5;
for (int i = 3; i < 10000; i += 5) 
{ 
    uniqueInts.Add(i); 
}

您可以尝试以下操作:

int num = 3;
List<int> listofnumbers = new List<int>();
listofnumbers.Add(num);
for (int i = 0; i < 10000; i++)
{
    num += 5;
    listofnumbers.Add(num);
}

使用IEnumerable<int>:看起来非常适合无限序列

IEnumerable<int> GeometricProgression(int start, int step)
{
   while(true)
   {
      yield return start;
      start += step;
   }
}           

用法:

var result = GeometricProgression(3, 5).Take(10).ToList();