[英]Lambda function for replacing characters in the string
下面是替换字符的 Python 代码。 有人可以解释 lambda 部分吗? 最初,X 取“p”并检查它是 a1 还是 a2。 交换在哪里发生?
def replaceUsingMapAndLambda(sent, a1, a2):
# We create a lambda that only works if we input a1 or a2 and swaps them.
newSent = map(lambda x: x if(x != a1 and x != a2) else a1 if x == a2 else a2, sent)
print(newSent)
return ''.join(newSent)
print(replaceUsingMapAndLambda("puporials toinp", "p", "t"))
输出:
$python main.py
['t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', ' ', 'p', 'o', 'i', 'n', 't']
tutorials point
谢谢,瑞思卡
这与:
def replaceUsingMapAndLambda(sent, a1, a2):
# We create a lambda that only works if we input a1 or a2 and swaps them.
newSent = []
for x in sent:
if x != a1 and x != a2:
newSent.append(x)
elif x == a2:
newSent.append(a1)
else:
newSent.append(a2)
print(newSent)
return ''.join(newSent)
为避免混淆,让我们首先提取 lambda 函数并查看它的作用。 lambda 函数定义为
lambda x: x if(x != a1 and x != a2) else a1 if x == a2 else a2
lambda 语句避免了创建命名函数的定义,但是任何 lambda 函数仍然可以定义为普通函数。 这个特定的 lambda 函数使用了一个三元运算符。 这可以扩展为常规的 if-else 语句。 这将导致类似这样的等效正则函数
def func(x, a1, a2):
if x != a1 and x != a2:
return x
elif x == a2:
return a1
else:
return a2
它需要字符串(或列表),在这种情况下是: "puporials toinp"
然后它遍历字符串/列表中的每个字符/项目并检查以下内容:(我会为你打破 lambda 代码)
lambda x: x if(x != a1 and x != a2) else a1 if x == a2 else a2
1) 如果字符/项目不等于 a1 且不等于 a2,则将其映射到它检查的相同字符。
这是这段代码: x if(x != a1 and x != a2)
别的
2) 如果字符等于 a2,则映射 a1 的值,否则映射 a2。
这是这段代码: else a1 if x == a2 else a2
然后 newSent 是一个包含字符的映射对象(具有上面解释的逻辑),并使用''.join(newSent)
命令将其转换回字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.