只是要注意,我真的想算術地添加數字,而不是將它們連接起來,實際上是 1 1 (2);2 2 (4); 所以在串列中添加數字。對困惑感到抱歉。
我有兩個陣列,需要將它們相加:
$Array1 = @(1,2,3,4,5)
$Array2 = @(2,3,4,5,1)
我需要遍歷每個元素并將它們加在一起(算術),以便我得到:
1 2
2 3
3 4
在一個陣列中。我怎樣才能快速做到這一點?我正在使用 powershell 5.1。
uj5u.com熱心網友回復:
您可以使用回圈將每個陣列中的數字相互連接,或者簡單地將它們相加。在這種情況下,我們將使用for回圈來遍歷陣列中的每個專案:
$Array1 = @(1,2,3,4,5)
$Array2 = @(2,3,4,5,1)
for ($i = 0; $i -lt $Array1.Count; $i )
{
Write-Host -Object "$($Array1[$i]) $($Array2[$i])"
}
<#
OutPut:
1 2
2 3
3 4
4 5
5 1
#>
或者,如果您只是想添加它們:
$Array1 = @(1,2,3,4,5)
$Array2 = @(2,3,4,5,1)
for ($i = 0; $i -lt $Array1.Count; $i )
{
$Array1[$i] $Array2[$i]
}
<#
Output:
3
5
7
9
6
#>
uj5u.com熱心網友回復:
我怎樣才能快速做到這一點?
假設這是您問題的重要部分,請將作業卸載到已編譯的 C# 代碼。對我來說for,Abraham Zinala 的回答中的回圈在大約 4 秒內運行了超過一百萬個專案陣列。C# 中的相同回圈在 ~0.5 秒內運行:
Add-Type -Language CSharp @"
using System;
using System.Collections.Generic;
namespace AddHelper
{
public static class Adder
{
public static int[] AddArrays(int[] array1, int[] array2)
{
int[] result = new int[array1.Length];
for (int i = 0; i < array1.Length; i ) {
result[i] = array1[i] array2[i];
}
return result;
}
}
}
"@;
$result = [AddHelper.Adder]::AddArrays($Array1, $Array2)
將 PowerShell 和 C# 中的所有內容從使用陣列轉換為使用,[System.Collections.Generic.List[int]]將大約 500 毫秒降低到大約 430 毫秒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357876.html
