Qia*_* Li 2 wolfram-mathematica
s
,生成一个带有n
(整数)重复的结果字符串s
{"a", "b", "c"}
和{1,0,3}
,我想拥有"accc"
.我当然希望有最有效的方法来做这些.否则,我自己的方式太丑陋和缓慢.
谢谢您的帮助!
acl*_*acl 12
rep[s_String, n_] := StringJoin[ConstantArray[s, n]]
Run Code Online (Sandbox Code Playgroud)
然后
rep["f", 3]
(*fff*)
Run Code Online (Sandbox Code Playgroud)
下一个
chars = {"a", "b", "c"};
freqs = {1, 0, 3};
StringJoin[MapThread[rep, {chars, freqs}]]
Run Code Online (Sandbox Code Playgroud)
给出"accc"
1,Table
将做你需要的.
s = "samplestring";
StringJoin[Table[s, {3}]]
"samplestringsamplestringsamplestring"
Run Code Online (Sandbox Code Playgroud)
但是ContantArray
如果你关心最后1/100秒,acl的回答使用速度会更快.
Do[StringJoin[Table[s, {30}]];, {10000}] // Timing
{0.05805, Null}
Do[StringJoin[ConstantArray[s, 30]];, {10000}] // Timing
{0.033306, Null}
Do[StringJoin[Table[s, {300}]];, {10000}] // Timing
{0.39411, Null}
Do[StringJoin[ConstantArray[s, 300]];, {10000}] // Timing
{0.163103, Null}
Run Code Online (Sandbox Code Playgroud)
对于2,MapThread将处理第二个列表已知为非负整数的情况.
StringJoin @
MapThread[Table[#1, {#2}] &, {{"a", "b", "c"} , {1, 0, 3}}]
"accc"
Run Code Online (Sandbox Code Playgroud)
如果第二个列表包含负整数,则将它们视为零.
第二个列表中的非整数元素被视为它们是整数部分.我不确定这是不是你想要的.
StringJoin @
MapThread[Table[#1, {#2}] &, {{"a", "b", "c"} , {1, 0, 3.7}}]
"accc"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
372 次 |
最近记录: |