[英]Enumerable for negative ranges
在python中,我們有一個范圍可以為具有負整數的數組生成。
例如:
In[4]: range(-2, 2+1)
Out[4]: [-2, -1, 0, 1, 2]
C#中是否存在等效系統; 我知道IEnumerable方法,但在嘗試它時,我得到以下輸出:
//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine("Hello, world!");
int half_window = 2;
var mySeq1 = Enumerable.Range(-2, 2+1).ToArray();
foreach(var item in mySeq1)
Console.Write(item.ToString() + " ");
}
}
}
產生輸出:
Hello, world!
-2 -1 0
是否已經有一個內置的方法可以用來獲取python的輸出?
Enumerable.Range
的第二個參數指定要生成的元素的計數 ,而不是停止值。
Console.WriteLine("Hello, world!");
int half_window = 2;
var mySeq1 = Enumerable.Range(-2, 5).ToArray();
// ^
foreach(var item in mySeq1)
Console.Write(item.ToString() + " ");
輸出:
Hello, world!
-2 -1 0 1 2
正如cubrr所說,第二個參數的工作方式略有不同 - 如果你想編寫自己的方法,它的工作方式與Python等價的方法完全相同,你可以使用:
public static class MyEnumerable
{
public static IEnumerable<int> Range(int start, int stop)
{
for (int i = start; i < stop; i++)
yield return i;
}
}
用作:
var result = MyEnumerable.Range(-2, 3); // -2, -1, 0, 1, 2
Enumerable.Range就是這樣的
Enumerable.Range(STARTVALUE,要計算多少)
示例Enumerable.Range(6, 10)
將生成
arr[6,7,8,9,10,11,12,13,14,15,16]
也就是說,10個元素從
如果你想要計算一個上升點,你將不得不編寫自己的功能。 類似的東西
MakeRange(int st, int end)
{
var range = st < 0 ? Math.Abs(st) + end + 1 : end-st;
return Enumerable.Range(st, range);
}
希望這能幫到你
C#的Enumerable.Range
獲取一個起始值和一個計數 - 要返回的元素數,而不是像python中的結束值。 要獲得與python等效的返回值,您需要將其稱為:
Enumerable.Range(start, end-start);
所以在你的情況下,電話會是
Enumerable.Range(-2, (2+1) - (-2));
這跟說的一樣
Enumerable.Range(-2, 5);
唯一需要注意的是,你需要注意end-start
不是否定的,否則Enumerable.Range
會拋出一個ArgumentOutOfRangeException
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.