key = ['网站','高手']
demolist = [1,'这是一个问答网站','没错,网站里高手如云。']
我现在要对列表demolist中的元素执行函数操作,若包含"网站,高手"添加b标签,列表元素不变
demolist2 = [1,'这是一个问答<b>网站</b>','没错,<b>网站</b>里<b>高手</b>如云。']
我知道python有个lambda函数,但是代码不会写,^^!
key = ['网站','高手']
demolist = [1,'这是一个问答网站','没错,网站里高手如云。']
我现在要对列表demolist中的元素执行函数操作,若包含"网站,高手"添加b标签,列表元素不变
demolist2 = [1,'这是一个问答<b>网站</b>','没错,<b>网站</b>里<b>高手</b>如云。']
我知道python有个lambda函数,但是代码不会写,^^!
import re
def insert_b(demo):
if type(demo) is str:
demo = re.sub('(网站|高手)', r'<b>\1</b>', demo)
return demo
demolist2 = map(insert_b, demolist1)
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
lambda 只能定义一个用于计算的表达式, 你还需要map,或者列表推导来调用这个lambda:
map函数有两个参数, 第一个参数为一个函数(lambda或者命名函数), 第二个参数为一个可迭代对象(list,tuple),
map将每次取一个元素传递给lambda函数,并取回结果
;鉴于你既然有多个需要处理的key, 而
lambda后面的语句必须是一个可以直接返回具体值的简单表达式
, lambda不再适合这种场景, 可以直接构造函数
:楼上的re模块如果你比较熟悉的话也可以使用, 不过那就是另外一个主题了.