Python 列表元素替换

2014-04-29
本文发布至今已有8年零162天,可能不再适用,请谨慎对待。

无内置replace

Python里 字符串(string)类型 有 replace 方法,但是 列表(list)类型 没有 类似的 replace 方法,见下面的报错信息:

>>> lst = ['1','2','3']
>>> lst.replace('1', '4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'replace'

我们只能自己用代码实现列表元素的替换,一般有下面三种场景:条件替换 , 批量替换 , 映射替换

条件替换

可以用列表解析的方法实现元素替换,

点击下方的"点击播放",观看把 ‘2’ 替换成 ‘4’ 的替换过程:

下面是代码实现。

>>> lst = ['1', '2', '3']
>>> rep = ['4' if x == '2' else x for x in lst]
>>> rep
['1', '4', '3']
>>> 

批量替换

批量替换,即把一个列表里的元素全部替换成同一个元素,

点击下图中"点击播放",观看把 ‘3’和'4’ 替换成 ’d’ 的替换过程:

下面是代码实现:

>>> lst = ['1', '2', '3', '4', '5']
>>> pattern = ['3', '4']
>>> rep = ['d' if x in pattern else x for x in lst]
>>> rep
['1', '2', 'd', 'd', '5']
>>>

映射替换

根据一个字典的映射关系替换。

点击下图中"点击播放",观看把 “3"和"4” 替换成英文的过程:

下面是代码实现:

>>> lst = ['1', '2', '3', '4', '5']
>>> pattern = {'3':'three', '4':'four'}
>>> rep = [pattern[x] if x in pattern else x for x in lst]
>>> rep
['1', '2', 'three', 'four', '5']
>>> 

捐助本站

为了保证阅读体验,本站不安放广告。但是,租用服务器和编写文章需要个人资金和时间的投入。

如果您觉得文章对您有用,请考虑捐助小站(金额不限),以期待更多原创文章。捐助记录

本站是个人网站,若无特别说明,文章均为原创,并采用 署名协议 CC-BY-NC 授权。
欢迎转载,惟请保留原文链接,且不得用于商业用途。