import timeit
import re
a=["aa","bb","cc"]
b="111^222^3333^44444"
def f1():
m=b.split("^")
s=''
for i in range(len(a)):
s+=m[i]
s+=a[i]
s+=m[-1]
return s
def f2():
m=b.split("^")
s=[]
for i in range(len(a)):
s.append(m[i])
s.append(a[i])
s.append(m[-1])
return "".join(s)
def f3():
m=b.split("^")
return "".join(m[i]+a[i] for i in range(len(a)))+m[-1]
r=re.compile("\^")
def f4():
s=""
i=0
for t,m in enumerate(r.finditer(b)):
s+=b[i:m.start()]+a[t]
i=m.end()
s+=b[i:]
return s
def f5():
s=b
for x in a:
s=s.replace("^",x,1)
return s
print(f1(),f2(),f3(),f4(),f5())
print(f"f1: {timeit.timeit(f1,number=100000,globals=globals())}")
print(f"f2: {timeit.timeit(f2,number=100000,globals=globals())}")
print(f"f3: {timeit.timeit(f3,number=100000,globals=globals())}")
print(f"f4: {timeit.timeit(f4,number=100000,globals=globals())}")
print(f"f5: {timeit.timeit(f5,number=100000,globals=globals())}")
aW1wb3J0IHRpbWVpdAppbXBvcnQgcmUKCmE9WyJhYSIsImJiIiwiY2MiXQpiPSIxMTFeMjIyXjMzMzNeNDQ0NDQiCmRlZiBmMSgpOgogICAgbT1iLnNwbGl0KCJeIikKICAgIHM9JycKICAgIGZvciBpIGluIHJhbmdlKGxlbihhKSk6CiAgICAgICAgcys9bVtpXQogICAgICAgIHMrPWFbaV0KICAgIHMrPW1bLTFdCiAgICByZXR1cm4gcwoKZGVmIGYyKCk6CiAgICBtPWIuc3BsaXQoIl4iKQogICAgcz1bXQogICAgZm9yIGkgaW4gcmFuZ2UobGVuKGEpKToKICAgICAgICBzLmFwcGVuZChtW2ldKQogICAgICAgIHMuYXBwZW5kKGFbaV0pCiAgICBzLmFwcGVuZChtWy0xXSkKICAgIHJldHVybiAiIi5qb2luKHMpCgpkZWYgZjMoKToKICAgIG09Yi5zcGxpdCgiXiIpCiAgICByZXR1cm4gIiIuam9pbihtW2ldK2FbaV0gZm9yIGkgaW4gcmFuZ2UobGVuKGEpKSkrbVstMV0KCnI9cmUuY29tcGlsZSgiXF4iKQpkZWYgZjQoKToKICAgIHM9IiIKICAgIGk9MAogICAgZm9yIHQsbSBpbiBlbnVtZXJhdGUoci5maW5kaXRlcihiKSk6CiAgICAgICAgcys9YltpOm0uc3RhcnQoKV0rYVt0XQogICAgICAgIGk9bS5lbmQoKQogICAgcys9YltpOl0KICAgIHJldHVybiBzCgpkZWYgZjUoKToKICAgIHM9YgogICAgZm9yIHggaW4gYToKICAgICAgICBzPXMucmVwbGFjZSgiXiIseCwxKQogICAgcmV0dXJuIHMKCgpwcmludChmMSgpLGYyKCksZjMoKSxmNCgpLGY1KCkpCgpwcmludChmImYxOiB7dGltZWl0LnRpbWVpdChmMSxudW1iZXI9MTAwMDAwLGdsb2JhbHM9Z2xvYmFscygpKX0iKQpwcmludChmImYyOiB7dGltZWl0LnRpbWVpdChmMixudW1iZXI9MTAwMDAwLGdsb2JhbHM9Z2xvYmFscygpKX0iKQpwcmludChmImYzOiB7dGltZWl0LnRpbWVpdChmMyxudW1iZXI9MTAwMDAwLGdsb2JhbHM9Z2xvYmFscygpKX0iKQpwcmludChmImY0OiB7dGltZWl0LnRpbWVpdChmNCxudW1iZXI9MTAwMDAwLGdsb2JhbHM9Z2xvYmFscygpKX0iKQpwcmludChmImY1OiB7dGltZWl0LnRpbWVpdChmNSxudW1iZXI9MTAwMDAwLGdsb2JhbHM9Z2xvYmFscygpKX0iKQo=