簡體   English   中英

與此Python等價的C#是什么?

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

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