我正在嘗試解決一個演算法示例。會有一個陣列。我需要計算這個陣列索引號的平方。輸出應為:“0-1-4-9-16-25-36-49-64-81”,因為索引號以 0-9 開頭。
我在網上搜索。但我找不到任何東西。我認為我們需要宣告一個這樣的陣列:
int[] a = new int[10];
但我不知道在那之后該怎么辦。我們是否應該接受用戶的輸入?
如果有人知道python,這是python代碼:
from numpy import
indis = arrange(0,10)
for dizi in indis:
dizi=dizi**2
print(dizi, end=" ")
感謝您的幫助。
uj5u.com熱心網友回復:
for(int i=0; i<10; i ){
Console.WriteLine(i*i);
}
uj5u.com熱心網友回復:
這個怎么樣 - 它更像蟒蛇
var sq = Enumerable.Range(0,9).Select(x=>x*x).ToArray();
foreach(var s in sq)
Console.WriteLine(s);
或許
var sq = Enumerable.Range(0,9).ToArray();
foreach(var s in sq)
Console.WriteLine(s*s);
這更接近蟒蛇
uj5u.com熱心網友回復:
既然您顯然是從 Python 遷移到 C#,那么讓我們從一點 Python 開始(可能是我第一次用這種語言撰寫代碼……)。
在這里,我到目前為止發現:
- Python 沒有(內置)陣列。那個 NumPy 東西一定是一個庫。
- Python 的 for 回圈非常受限。“正常”的成語是不存在的。但是有一個相當模糊的
range()東西(除非 Python 像 Haskell 一樣懶惰),它可能會也可能不會被優化掉。
由于 2.,您沒有清楚地看到手頭的問題,因此,當您轉移到 C# 時,您看不到明顯的優化。在那里(在 C# 中),沒有人會用連續的整數創建一個臨時資料結構(例如陣列),然后對其進行迭代。這在許多層面上都是浪費和晦澀的。
所以,在 Python 的限制下,為了避免range()開銷,你可能會寫:
def meh(arr):
i = 0
while i < len(arr):
print(i*i)
i = i 1
當然,arr上面的引數將是一個串列,而不是一個陣列,因為 1。
如果你將那段(優化的)代碼翻譯成 C#,它看起來像:
void meh<T>(T[] arr) {
for (int i = 0; i < arr.Size; i ) {
print(i*i)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464742.html
下一篇:Python串列理解優化
