1

我有一个代码,它在列表的每个项目上连接一个字符串“lst”。

    i = 0
    lim = len(lst)
    while i < lim:
        lst[i] = 'lst%s' % (lst[i])
        i += 1

有没有更快的方法来做到这一点?

4

4 回答 4

3

这将修改原始lst对象:

lst[:] = ['lst%s' % item for item in lst]

或使用新样式字符串格式:

lst[:] = ['lst{}'.format(item) for item in lst]
于 2013-06-07T05:47:04.197 回答
2

使用列表理解切片分配:

lst[:] = ['lst' + x for x in lst]
于 2013-06-07T05:46:49.867 回答
0

这是地图版本

lst = map(lambda x: 'lst%s' % x, lst)
于 2013-06-07T05:51:33.530 回答
0

有趣的地图版本

>>> lst=['foo', 'bar', 'baz']
>>> map('lst'.__add__, lst)
['lstfoo', 'lstbar', 'lstbaz']

但更严重的是,您可以从生成器表达式中分配给切片

>>> lst[:] = ('lst{}'.format(x) for x in lst)
>>> lst
['lstfoo', 'lstbar', 'lstbaz']
于 2013-06-07T05:52:32.443 回答