重命名python列表中的项目

时间:2018-11-26 09:31:33

标签: python python-3.x list

我有一个如下的python列表:

['item1','item2','item3'] 

我正在尝试将列表中的项目重命名为

['person1','person2','person3']

谁能指导我。谢谢

4 个答案:

答案 0 :(得分:4)

您可以使用replace"item"更改为"person",也可以使用list comprehension生成新列表。

items = ['item1','item2','item3']
people = [item.replace('item', 'person') for item in items]

结果:

['person1', 'person2', 'person3']

答案 1 :(得分:2)

如果要用特定值替换特定元素,请执行以下操作:

In [521]: items = ['item1','item2','item3']

In [522]: dic = {'item1':'person1', 'item2':'human', 'item3':'person3'}

In [523]: [dic.get(n, n) for n in items]
Out[523]: ['person1', 'human', 'person3']

答案 2 :(得分:1)

考虑到速度并考虑到许多要素:

%%timeit
arr = ['item1', 'item2', 'item3']
arr = np.char.replace(arr, 'item', 'person')

每个循环16.4 µs±1.07 µs(平均±标准偏差,共运行7次,每个循环100000次)

%%timeit
arr = ['item1', 'item2', 'item3']
arr = [x.replace('item', 'person') for x in arr]

每个循环1.42 µs±174 ns(平均±标准偏差,共运行7次,每个循环1000000次)

即使是100.000个元素,使用numpy似乎也比较慢:

数字:每个循环177毫秒±15.4毫秒(平均±标准偏差,共运行7次,每个循环1次)

ListComprehension :每个循环35.7毫秒±3.15毫秒(平均±标准偏差,共运行7次,每个循环10个循环)

即使 Pandas.Series 在我的测试中速度也较慢:

%%timeit
series.str.replace('item', 'person')

每个循环144毫秒±4.47毫秒(平均±标准偏差,共运行7次,每个循环10个循环)

答案 3 :(得分:0)

如果基本列表的末尾只有一位数字,则可以使用:

>>> out = [] 
>>> input = ['item1','item2','item3']
>>> for i in input:
        out.append('person{}'.format(i[-1]))


>>> out
['person1', 'person2', 'person3']

编辑:

我也遇到了这个解决方案,该解决方案也适用于大于9的数字:

>>> items = ['item1', 'item2', 'item3']
>>> out = []

>>> for item in items:
        out.append('person{}'.format(int(filter(str.isdigit,item))))

>>> out
['person1', 'person2', 'person3']