我有一个如下列表:
L1 = ['asd', 'pqr', 'Mn2', 'Mn3', 'xyz']
L2 = ['asd', 'pqr', 'Mn7', 'Mn8', 'Mn9', 'xyz']
我正在尝试获取以下内容:
L1 = ['asd', 'pqr', 'Mn1', 'Mn2', 'xyz']
L2 = ['asd', 'pqr', 'Mn1', 'Mn2', 'Mn3', 'xyz']
。每次Mn1, Mn2, ...
系列出现在列表中,我都需要更改它们以更新它们的时间顺序。在L2
中,Mn7, Mn8, Mn9
更新为Mn1, Mn2, Mn3
。
Mn
系列可以是任意数字,例如Mn11, Mn12, Mn13, Mn14
等,但无论何时出现,它们都是按数字顺序排列的
我不知道该怎么做。
可以使用正则表达式代替数字。例如:
import re
from itertools import count
L1 = ["asd", "pqr", "Mn2", "Mn3", "xyz"]
L2 = ["asd", "pqr", "Mn7", "Mn8", "Mn9", "xyz"]
def change(lst):
c, pat = count(1), re.compile(r"Mn(d+)")
return [pat.sub(lambda x: f"Mn{next(c)}", v) for v in lst]
L1 = change(L1)
L2 = change(L2)
print(L1)
print(L2)
打印:
['asd', 'pqr', 'Mn1', 'Mn2', 'xyz']
['asd', 'pqr', 'Mn1', 'Mn2', 'Mn3', 'xyz']