我有一个字符串和两个数组,如下所示:
st="a1b2c3d"
arr1 = ['1','2','3']
arr2 = ['X','Y','Z']
我要将“1”、“2”、“3”的所有值替换为“X”、“Y”、“Z”。最后一个字符串如下所示:
'aXbYcZd'
所以我写了这个循环:
for i in range(0, len(arr1)):
st.replace(str(arr1[i]),str(arr2[i]))
结果是:
'aXb2c3d'
'a1bYc3d'
'a1b2cZd'
如何正确地做我想做的事?你知道吗
谢谢!你知道吗
Tags:
如果使用替换
maketrans
需要2个字符串作为参数。如果你真的有一个列表,你可以使用''.join(l)
把它变成一个合适的字符串。你只需要做一次桌子。你知道吗效率只有一点。
str.translate
是在映射a
=>;b
和b
=>;其他内容时正确执行此操作的方法。如果要替换字符串,则可能需要使用re.sub
。你知道吗反复调用replace意味着每次替换都必须遍历整个字符串,即O(m*n)。取而代之的是:
第一行是O(m),其中m是arr1和arr2的长度。你知道吗
第二行是O(n),其中n是st的长度
总的来说,这是O(m+n)而不是O(m*n),如果m或n很大,这是一个重大的胜利。你知道吗
使用^{} 同时遍历两个列表以替换值:
^{} 不会就地替换字符串。您需要将返回值赋回变量。你知道吗
相关问题 更多 >
编程相关推荐