这对我来说不时出现:我有一些C#代码非常想要Python中的range()
函数。
我知道使用
for (int i = 0; i < 12; i++)
{
// add code here
}
但是这会在功能用法中减少,就像我想要做一个Linq Sum()
而不是编写上面的循环一样。
有没有内置?我想我总是可以用yield
或者其他方式来推销自己的,但是 非常方便拥有。
答案 0 :(得分:77)
您正在寻找Enumerable.Range
方法:
var mySequence = Enumerable.Range(0, 12);
答案 1 :(得分:14)
为了补充每个人的答案,我认为我应该补充说Enumerable.Range(0, 12);
更接近Python 2.x&#39; xrange(12)
,因为它是可枚举的。< / p>
如果有人特别需要列表或数组:
Enumerable.Range(0, 12).ToList();
或
Enumerable.Range(0, 12).ToArray();
更接近Python的range(12)
。
答案 2 :(得分:7)
Enumerable.Range(start, numElements);
答案 3 :(得分:5)
Enumerable.Range(0,12);
答案 4 :(得分:0)
namespace CustomExtensions
{
public static class Py
{
// make a range over [start..end) , where end is NOT included (exclusive)
public static IEnumerable<int> RangeExcl(int start, int end)
{
if (end <= start) return Enumerable.Empty<int>();
// else
return Enumerable.Range(start, end - start);
}
// make a range over [start..end] , where end IS included (inclusive)
public static IEnumerable<int> RangeIncl(int start, int end)
{
return RangeExcl(start, end + 1);
}
} // end class Py
}
用法:
using CustomExtensions;
Py.RangeExcl(12, 18); // [12, 13, 14, 15, 16, 17]
Py.RangeIncl(12, 18); // [12, 13, 14, 15, 16, 17, 18]