这对我来说时不时出现:我有一些 C# 代码非常想要range()
Python 中可用的函数。
我知道使用
for (int i = 0; i < 12; i++)
{
// add code here
}
但这在功能用法上有所阻碍,就像我想做一个 LinqSum()
而不是写上面的循环一样。
有内置的吗?我想我总是可以自己滚动一个yield
或这样的,但这会很方便。
您正在寻找Enumerable.Range
方法:
var mySequence = Enumerable.Range(0, 12);
只是为了补充每个人的答案,我想我应该添加它Enumerable.Range(0, 12);
更接近 Python 2.x xrange(12)
,因为它是一个可枚举的。
如果有人特别需要列表或数组:
Enumerable.Range(0, 12).ToList();
或者
Enumerable.Range(0, 12).ToArray();
更接近 Python 的range(12)
.
Enumerable.Range(start, numElements);
Enumerable.Range(0,12);
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]