Dit duikt zo nu en dan voor mij op: ik heb wat C#-code die de functie range()
in Python heel graag wil hebben.
Ik ben me bewust van het gebruik
for (int i = 0; i < 12; i++)
{
// add code here
}
Maar dit remt in functioneel gebruik, zoals wanneer ik een Linq Sum()
wil doen in plaats van de bovenstaande lus te schrijven.
Is er iets ingebouwd? Ik denk dat ik altijd mijn eigen kan gooien met een yield
of iets dergelijks, maar dit zou zohandig zijn om gewoon hebben.
Antwoord 1, autoriteit 100%
U zoekt de Enumerable.Range
methode:
var mySequence = Enumerable.Range(0, 12);
Antwoord 2, autoriteit 17%
Om de antwoorden van iedereen aan te vullen, dacht ik dat ik moet toevoegen dat Enumerable.Range(0, 12);
dichter bij Python 2.x’s xrange(12)
ligt omdat het is een opsombaar.
Als iemand specifiek een lijst of een array nodig heeft:
Enumerable.Range(0, 12).ToList();
of
Enumerable.Range(0, 12).ToArray();
zijn dichter bij het range(12)
van Python.
Antwoord 3, autoriteit 8%
Enumerable.Range(start, numElements);
Antwoord 4, autoriteit 5%
Opsombaar.Bereik(0,12);
Antwoord 5, autoriteit 4%
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
}
Gebruik:
using CustomExtensions;
Py.RangeExcl(12, 18); // [12, 13, 14, 15, 16, 17]
Py.RangeIncl(12, 18); // [12, 13, 14, 15, 16, 17, 18]