Originating from here,相当于此代码的C#是什么?我认为**
是指数,但我不知道[i]
的作用。
def sequence(v, p, column):
subsequence = []
for i in range(v):
subsequence += [i] * v**(p - column)
return subsequence * v**(column - 1)
答案 0 :(得分:6)
一个人可以做:
public static List<int> sequence(int v, int p, int column) {
var subsequence = new List<int>();
for (int i = 0; i < v; i++) {
int limit = (int)Math.Pow(v, p - column);
for (int j = 0; j < limit; j++)
subsequence.Add(i);
}
var true_sequence = new List<int>();
for (int k = 0; k < (int)Math.Pow(v, column - 1); k++)
true_sequence.AddRange(subsequence);
return true_sequence;
}
[i] * <number>
表示“重复<number>
次此列表并将结果放入新列表”。 [i]
只是一个仅包含数字i
的列表。
编辑:说明
for i in range(v):
很好地翻译为:
for (int i = 0; i < v; i++) {
subsequence += [i] * v**(p - column)
这有点复杂,但其本质上是说“取v,将其取为(p-列)的幂,然后将i
的数量加到子序列中”。接近:
int limit = Math.Pow(v, p - column);
for (int j = 0; j < limit; j++)
subsequence.Add(i);
return subsequence * v**(column - 1)
现在,这就是“将v用作(列-1)的幂,并返回包含这么多子序列实例的列表”。这就是该函数中其余代码的作用:获取Math.Pow(v,column-1)子序列,将它们全部添加到列表中,然后返回所述列表。