gpt4 book ai didi

arrays - 将顺序字符串构建到数组中(快速)

转载 作者:行者123 更新时间:2023-12-02 23:41:49 25 4
gpt4 key购买 nike

我编写了以下代码来构建具有顺序字符串的数组。
它的工作方式与我预期的一样,但我希望它能更快地运行。有没有更有效的方法在PowerShell中产生我想要的结果?

我是PowerShell的新手,非常感谢您的指导。

$MIN = 1
$MAX = 20000
$ARRAY = @()
$PREFIX = "AA"

$startDTM = (Get-Date) # Start time
FOR ($i=$MIN; $i -le $MAX; $i++)
{
If ($i -gt 0 -and $i -lt 10) {
$ARRAY = $ARRAY + ($PREFIX+"00000"+$i)
}
If ($i -gt 9 -and $i -lt 100) {
$ARRAY = $ARRAY + ($PREFIX+"0000"+$i)
}
If ($i -gt 99 -and $i -lt 1000) {
$ARRAY = $ARRAY + ($PREFIX+"000"+$i)
}
If ($i -gt 999 -and $i -lt 10000) {
$ARRAY = $ARRAY + ($PREFIX+"00"+$i)
}
If ($i -gt 9999 -and $i -lt 100000) {
$ARRAY = $ARRAY + ($PREFIX+"0"+$i)
}
If ($i -gt 99999 -and $i -lt 1000000) {
$ARRAY = $ARRAY + ($PREFIX+$i)
}
}
$endDTM = (Get-Date) #End Time
"Elapsed Time: $(($endDTM-$startDTM).totalseconds) seconds"
$ARRAY.count #How many loaded.
$ARRAY的示例:
AA000001
AA000002
...
AA019999
AA020000

最佳答案

接下来的单行代码花费了 0.4911672 秒(您的示例 12.9638944 秒)。结果是一样的。它使用带十进制说明符的格式字符串来确保有6位数字,并将结果仅存储在数组中:

$MIN = 1
$MAX = 20000
$PREFIX = "AA"

$ARRAY = $MIN .. $MAX | % { "$PREFIX{0:D6}" -f $_ }

您可以使用while循环进一步改善性能(感谢4c74356b41提及):
# ....
$array = while ($MIN -le $MAX)
{
"$PREFIX{0:D6}" -f $MIN++
}

这在我的计算机上花费了 0.0970327 秒。

关于arrays - 将顺序字符串构建到数组中(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com