重命名python列表中的项目

sco*_*tin 3 python list python-3.x

我有一个 python 列表如下:

['item1','item2','item3'] 
Run Code Online (Sandbox Code Playgroud)

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

['person1','person2','person3']
Run Code Online (Sandbox Code Playgroud)

谁能指导我。谢谢

May*_*wal 6

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

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']
Run Code Online (Sandbox Code Playgroud)


khe*_*ood 5

您可以使用replace更改"item""person",也可以使用列表推导式生成新列表。

items = ['item1','item2','item3']
people = [item.replace('item', 'person') for item in items]
Run Code Online (Sandbox Code Playgroud)

结果:

['person1', 'person2', 'person3']
Run Code Online (Sandbox Code Playgroud)


小智 2

考虑到速度和许多元素:

\n\n
%%timeit\narr = ['item1', 'item2', 'item3']\narr = np.char.replace(arr, 'item', 'person')\n
Run Code Online (Sandbox Code Playgroud)\n\n

16.4 \xc2\xb5s \xc2\xb1 1.07 \xc2\xb5s 每个循环(平均 \xc2\xb1 标准偏差 7 次运行,每次 100000 次循环)

\n\n
%%timeit\narr = ['item1', 'item2', 'item3']\narr = [x.replace('item', 'person') for x in arr]\n
Run Code Online (Sandbox Code Playgroud)\n\n

1.42 \xc2\xb5s \xc2\xb1 每个循环 174 ns(平均 \xc2\xb1 标准偏差 7 次运行,每次 1000000 次循环)

\n\n

即使对于 100.000 个元素,使用 numpy 似乎也更慢:

\n\n

麻木: 177 ms \xc2\xb1 每个循环 15.4 ms(平均 \xc2\xb1 标准偏差 7 次运行,每次 1 次循环)

\n\n

列表理解: 35.7 ms \xc2\xb1 每个循环 3.15 ms(平均 \xc2\xb1 标准偏差 7 次运行,每次 10 次循环)

\n\n

甚至熊猫系列也更慢:

\n\n
%%timeit\nseries.str.replace('item', 'person')\n
Run Code Online (Sandbox Code Playgroud)\n\n

144 ms \xc2\xb1 每个循环 4.47 ms(平均 \xc2\xb1 标准偏差 7 次运行,每次 10 个循环)

\n