Maison > Questions et réponses > le corps du texte
PHP中文网2017-04-17 17:04:51
lambda 只能定义一个用于计算的表达式, 你还需要map,或者列表推导来调用这个lambda:
map函数有两个参数, 第一个参数为一个函数(lambda或者命名函数), 第二个参数为一个可迭代对象(list,tuple), map将每次取一个元素传递给lambda函数,并取回结果
;
# lambda实现一个没有名字的函数
# lambda 参数名 : 处理参数的表达式
lambda x: x if str(x).isdigit() else str(x).replace('网站', 'xxx网站xxx')
鉴于你既然有多个需要处理的key, 而lambda后面的语句必须是一个可以直接返回具体值的简单表达式
, lambda不再适合这种场景, 可以直接构造函数
:
demolist = [1,'这是一个问答网站','没错,网站里高手如云。']
key = {'网站':'Net','高手':"Master"}
def trans(each):
global key
for k in key:
if type(each) is str and k in each:
each = each.replace(k, key[k])
return each
demolist = map(trans, demolist)
for each in demolist:
print each
λ ~/ python x.py
1
这是一个问答Net
没错,Net里Master如云。
楼上的re模块如果你比较熟悉的话也可以使用, 不过那就是另外一个主题了.
PHP中文网2017-04-17 17:04:51
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)