T
Size: a a a
T
ЯЛ
from timeit import timeit
from itertools import chain
def insert_separator(old, sep):
items_count = len(old)
separators = (sep for _ in range(items_count))
result = []
for i, s in zip(old, separators):
result.append(i)
result.append(s)
return result[:-1]
def foo(lst, sep):
res = []
for i in lst:
res += [i, sep]
return res[:-1]
source = [1, 2, 3]
sep = None
N = len(source)
first = lambda: list(sum(zip(source, [sep]*N), tuple()))[:-1]
second = lambda: sum([[x, None] for x in source], list())[:-1]
third = lambda: list(chain(*([x, None] for x in source)))[:-1]
fourth = lambda: insert_separator(source, sep)
fifth = lambda: foo(source, sep)
print(timeit(first, number=10_000_000))
print(timeit(second, number=10_000_000))
print(timeit(third, number=10_000_000))
print(timeit(fourth, number=10_000_000))
print(timeit(fifth, number=10_000_000))
print(first())
print(second())
print(third())
print(fourth())
print(fifth())
А
def separate(arr, sep):
return list(itertools.chain(*zip(arr, [sep] * len(arr))))[:-1]
a
ЯЛ
R3
T
T
T
А
return itertools.chain(*zip(arr, [sep] * len(arr)))[:-1]
list(separate(arr, sep))
R3
R3
R3
1.8584743000000001
2.5841283999999995
16.8918254
20.1250147
2.4605135999999987
А
ᅠ
ЯЛ
17.196906853
17.679335793
23.675172630999995
37.626074392
12.127818505999997
24.078679207999997
R3
R3
T