📜  在Python中映射函数和 Lambda 表达式以替换字符

📅  最后修改于: 2022-05-13 01:55:41.363000             🧑  作者: Mango

在Python中映射函数和 Lambda 表达式以替换字符

给定一个字符串S、c1 和 c2。将字符c1 替换为 c2 并将 c2 替换为 c1。
例子:

Input : str = 'grrksfoegrrks'
        c1 = e, c2 = r 
Output : geeksforgeeks 

Input : str = 'ratul'
        c1 = t, c2 = h 
Output : rahul

我们在 C++ 中有针对此问题的现有解决方案,请参阅在字符串S 链接中用 c2 替换字符c1 和用 c1 替换字符 c1。我们将使用 Lambda 表达式和 map()函数在Python中快速解决这个问题。我们将创建一个lambda 表达式,其中字符串中的字符c1 将被 c2 替换,c2 将被 c1 替换,其他将保持不变,然后我们将这个表达式映射到字符串的每个字符,并得到更新的字符串。

# Function to replace a character c1 with c2 
# and c2 with c1 in a string S 
  
def replaceChars(input,c1,c2):
  
     # create lambda to replace c1 with c2, c2 
     # with c1 and other will remain same 
     # expression will be like "lambda x:
     # x if (x!=c1 and x!=c2) else c1 if (x==c2) else c2"
     # and map it onto each character of string
     newChars = map(lambda x: x if (x!=c1 and x!=c2) else \
                c1 if (x==c2) else c2,input)
  
     # now join each character without space
     # to print resultant string
     print (''.join(newChars))
  
# Driver program
if __name__ == "__main__":
    input = 'grrksfoegrrks'
    c1 = 'e'
    c2 = 'r'
    replaceChars(input,c1,c2)

输出:

geeksforgeeks