![](/img/trans.png)
[英]How to pass a list from C# to Ironpython as input parameter of a function
[英]How to use local list as an input parameter for function
我正在為學校做一個項目,並且花了很長時間讓它發揮作用。
程序流程如下:
這是使用其結構進行所有統計的函數:
public struct DescriptiveStat
{
public double max, min, sum, avg, var, stddev;
public string range;
}
public static DescriptiveStat GetDescriptiveStat(List<double> data)
{
DescriptiveStat result = new DescriptiveStat();
double sum = 0, sqSum = 0, max = data[0], min = data[0];
foreach (double x in data)
{
sum += x;
sqSum += Math.Pow(x, 2);
if (x > max)
max = x;
if (x < min)
min = x;
}
int n = data.Count;
result.sum = sum;
result.max = max;
result.min = min;
result.avg = sum / n;
result.var = (sqSum - n * Math.Pow(result.avg, 2)) / n;
result.stddev = Math.Sqrt(result.var);
return result;
}
該功能是我老師設置的,不能更改。 它必須采用List<double> data
並返回結果。
目前我擁有它,因此當我使用單個變量按“DescriptiveStat”表單中的“生成”按鈕時,它會調用我的函數將數據加載到列表中,以准備將其發送到上面的 DescriptiveStat 函數。 這是我的代碼:
public void GetDescriptiveStat()
{
List<double> data = new List<double>();
double temp;
data.ToArray();
for(int i = 0; i < 94; i++)
{
temp = dblValues[i][0];
data.Add(temp);
}
data.ToList();
//data.ForEach(Console.WriteLine);
}
我知道它正在正確地將數據讀入列表,但是我在使用此本地列表作為函數DescriptiveStat GetDescriptiveStat(List<double>data)
的參數時遇到問題 - 當我嘗試插入類似double result = Mathtool.GetDescriptiveStat(data);
它給了我錯誤:
任何人都可以幫助我做錯什么,或者我如何使用列表作為函數的參數?
謝謝你。
首先,您不必將列表轉換為數組( data.ToArray()
),然后再轉換回列表( data.ToList()
)。 Second 而不是void
讓您的函數返回List<double>
如下所示:
public List<double> GetDescriptiveStat()
{
List<double> data = new List<double>();
for (int i = 0; i < 94; i++)
{
data.Add(dblValues[i][0]);
}
return data;
}
現在,因為您的函數GetDescriptiveStat()
返回一個列表,您可以將其作為輸入參數發送到教師函數GetDescriptiveStat(List<double> data)
:
DescriptiveStat myData = GetDescriptiveStat(GetDescriptiveStat());
也許有更好的方法可以做到這一點,但您明確表示教師功能無法更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.