s = '20110104' def option_1(): return '-'.join([s[:4], s[4:6], s[6:]]) def option_1a(): return '-'.join((s[:4], s[4:6], s[6:])) def option_2(): return '{}-{}-{}'.format(s[:4], s[4:6], s[6:]) def option_3(): return '%s-%s-%s' % (s[:4], s[4:6], s[6:]) def option_original(): return s[:4] + "-" + s[4:6] + "-" + s[6:]
Running %timeit on each gives these results
- option_1: 35.9 ns per loop
- option_1a: 35.8 ns per cycle
- option_2: 36 ns per cycle
- option_3: 35.8 ns per cycle
- option_original: 36 ns per loop
So ... choose the most readable one since the performance improvements are minor.
Rob Cowie
source share