我有一个如下的python列表:
['item1','item2','item3']
我正在尝试将列表中的项目重命名为
['person1','person2','person3']
谁能指导我。谢谢
答案 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次)
数字:每个循环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']