リストの各項目に文字列「lst」を連結するコードがあります。
i = 0
lim = len(lst)
while i < lim:
lst[i] = 'lst%s' % (lst[i])
i += 1
これを行うより速い方法はありますか?
lst
これにより、元のオブジェクトが変更されます。
lst[:] = ['lst%s' % item for item in lst]
または、新しいスタイルの文字列フォーマットを使用します:
lst[:] = ['lst{}'.format(item) for item in lst]
リスト内包スライス代入の使用:
lst[:] = ['lst' + x for x in lst]
楽しい地図バージョン
>>> lst=['foo', 'bar', 'baz']
>>> map('lst'.__add__, lst)
['lstfoo', 'lstbar', 'lstbaz']
しかし、もっと深刻なことに、ジェネレーター式からスライスに割り当てることができます
>>> lst[:] = ('lst{}'.format(x) for x in lst)
>>> lst
['lstfoo', 'lstbar', 'lstbaz']
地図版はこちら
lst = map(lambda x: 'lst%s' % x, lst)