[英]What is the C# equivalent to this Python?
從這里開始 ,與該代碼等效的C#是什么? 我認為**
是指數,但我不知道[i]
作用。
def sequence(v, p, column):
subsequence = []
for i in range(v):
subsequence += [i] * v**(p - column)
return subsequence * v**(column - 1)
一個可以做:
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)子序列,將它們全部添加到列表中,然后返回所述列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.