gpt4 book ai didi

julia - 如何在 Julia 中重复字符串中的单个字符

转载 作者:行者123 更新时间:2023-12-01 23:20:41 26 4
gpt4 key购买 nike

question展示了如何在 Python 中重复字符串中的单个字符。

>>> s = '123abc'
>>> n = 3
>>> ''.join([c*n for c in s])
'111222333aaabbbccc'

你会如何在 Julia 中做到这一点?

编辑

作为 Julia 的新手,我对这种语言所提供的功能感到惊讶。

例如,我原以为上面的 Python 代码与任何语言的代码一样简单。然而,正如我在下面的回答所示,Julia 等效代码 join([c^n for c in s]) 可以说更简单,并且可能达到任何语言的最佳简单性。

另一方面,@niczky12 已经表明,通过将省略号运算符添加到 string 函数中,速度可以比更简单的 join 功能实现。

在一个案例中,Julia 以简洁着称。在另一种情况下,Julia 以速度着称。

对于 Python 程序员来说,当他们注意到 c^n 在 Python 中只是 c*n 时,他们应该几乎可以立即阅读第一种情况。当他们看到使用 ... 省略号运算符的速度提高时,额外的复杂性可能不会阻止他们学习 Julia。读者可能开始认为我希望许多 Python 程序员认真对待 Julia。他们不会错的。

感谢@rickhg12hs 建议基准测试。我学到了很多东西。

最佳答案

除了上面的答案,我发现 string 函数运行得更快。这是我的基准:

julia> n = 2;

julia> s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

julia> string((c^n for c in s)...) # proof that it works
"AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"

julia> n = 26000;

julia> @benchmark join(c^n for c in s)
BenchmarkTools.Trial:
memory estimate: 1.44 MiB
allocs estimate: 36
--------------
minimum time: 390.616 μs (0.00% GC)
median time: 425.861 μs (0.00% GC)
mean time: 484.638 μs (6.54% GC)
maximum time: 45.006 ms (98.99% GC)
--------------
samples: 10000
evals/sample: 1

julia> @benchmark string((c^n for c in s)...)
BenchmarkTools.Trial:
memory estimate: 1.29 MiB
allocs estimate: 31
--------------
minimum time: 77.480 μs (0.00% GC)
median time: 101.667 μs (0.00% GC)
mean time: 126.455 μs (0.00% GC)
maximum time: 832.524 μs (0.00% GC)
--------------
samples: 10000
evals/sample: 1

如您所见,它比@Julia Learner 提出的join 解决方案快大约 3 倍。我在 0.7 上测试了上面的内容,但没有弃用警告,所以我假设它在 1.0 上也能正常工作。连TIO says so .

关于julia - 如何在 Julia 中重复字符串中的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52527758/

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