我有一个标签列表(['aa', 'bb', 'cc']
),我想将其作为字符串(label=aa label=bb label=cc
)。这是微不足道的,但我想要性能和pythonic方法来做到这一点。
我目前拥有的是这个;
In [1]: timeit ''.join([ 'label={} '.format(i) for i in ['aa', 'bb', 'cc']])
1000000 loops, best of 3: 1.36 us per loop
和这个
In [2]: timeit 'label=' + ' label='.join(['aa', 'bb', 'cc']) + ' '
1000000 loops, best of 3: 346 ns per loop
它们都产生相同的字符串,但第二个字符串,我觉得这样做是非常非pythonic的方式更快。</ p>
是否有一种不会伤害我心脏的更好,更py的方式?
答案 0 :(得分:1)
这是否重要?
l = ('aa', 'bb', 'cc')
('label=%s '*len(l)) % l
timeit给出
timeit ('label=%s ' * len(l)) % l
1000000 loops, best of 3: 263 ns per loop
答案 1 :(得分:0)
我非常怀疑你会找到比第二种更快的方式, 这个对你来说可能看起来更像“pythonic”,但你的第二个仍然是这个的3倍:
''.join(map(lambda z: 'label=' + z + ' ', ['aa', 'bb', 'cc']))
结果:
python -m timeit "''.join(map(lambda z: 'label=' + z + ' ', ['aa', 'bb', 'cc']))"
1000000 loops, best of 3: 1.19 usec per loop
python -m timeit "'label=' + ' label='.join(['aa', 'bb', 'cc']) + ' '"
1000000 loops, best of 3: 0.361 usec per loop