如何生成在起始数字上加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);
}
我试得对吗?还是有什么简单的方法?
将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();