This crops up every now and then for me: I have some C# code badly wanting the range()
function available in Python.
I am aware of using
for
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
}
Usage:
using CustomExtensions;
Py.RangeExcl(12, 18); // [12, 13, 14, 15, 16, 17]
Py.RangeIncl(12, 18); // [12, 13, 14, 15, 16, 17, 18]
You're looking for the Enumerable.Range method:
var mySequence = Enumerable.Range(0, 12);
Just to complement everyone's answers, I thought I should add that Enumerable.Range(0, 12);
is closer to Python 2.x's xrange(12)
because it's an enumerable.
If anyone requires specifically a list or an array:
Enumerable.Range(0, 12).ToList();
or
Enumerable.Range(0, 12).ToArray();
are closer to Python's range(12)
.
Enumerable.Range(start, numElements);
Enumerable.Range(0,12);