Ответ 1
Вы ищете метод Enumerable.Range
:
var mySequence = Enumerable.Range(0, 12);
Это время от времени появляется для меня: у меня есть код С#, сильно нуждающийся в функции range()
, доступной в Python.
Мне известно использование
for (int i = 0; i < 12; i++)
{
// add code here
}
Но это тормозит функциональные применения, так как когда я хочу сделать Linq Sum()
вместо написания вышеописанного цикла.
Есть ли встроенные функции? Думаю, я всегда мог бы просто перевернуть свой собственный с помощью 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]