簡體   English   中英

可以計算負范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM