これは時々発生します。Pythonでrange()
関数を使用できるようにしたいC#コードがいくつかあります。
私は使用することを知っています
_for (int i = 0; i < 12; i++)
{
// add code here
}
_
しかし、これは、上記のループを作成する代わりにLinq Sum()
を実行したい場合のように、機能の使用法でブレーキをかけます。
ビルトインはありますか?私はいつでもyield
などで自分自身を転がすことができると思いますが、これはsoだけに便利ですhave。
あなたが探している 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]