Подтвердить что ты не робот

Есть ли эквивалент диапазона Pythons (12) в С#?

Это время от времени появляется для меня: у меня есть код С#, сильно нуждающийся в функции range(), доступной в Python.

Мне известно использование

for (int i = 0; i < 12; i++)
{
   // add code here
}

Но это тормозит функциональные применения, так как когда я хочу сделать Linq Sum() вместо написания вышеописанного цикла.

Есть ли встроенные функции? Думаю, я всегда мог бы просто перевернуть свой собственный с помощью yield или такой, но это было бы так удобно, просто.

4b9b3361

Ответ 1

Вы ищете метод Enumerable.Range:

var mySequence = Enumerable.Range(0, 12);

Ответ 2

Чтобы дополнить все ответы, я подумал, что должен добавить, что Enumerable.Range(0, 12); ближе к Python 2.x xrange(12), потому что он перечислим.

Если кому-то требуется конкретный список или массив:

Enumerable.Range(0, 12).ToList();

или

Enumerable.Range(0, 12).ToArray();

ближе к Python range(12).

Ответ 3

Enumerable.Range(start, numElements);

Ответ 4

Enumerable.Range(0,12);

Ответ 5

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]