使用更新的数字顺序更改列表元素
Change list elements with updated numerical order
我有一个列表如下:
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']
我有一个列表如下:
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']