用更新后的数字顺序更改列表元素



我有一个如下列表:

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']

相关内容

  • 没有找到相关文章

最新更新