我有一个清单:
['a1', 'a2', 'a3']
我想更新它,以便每个数字组件增加1:
['a2', 'a3', 'a4']
最有效的方法是什么?
答案 0 :(得分:3)
如果您的列表保留此表单,这应该很好:
for x in range(len(l)):
l[x] = l[x][0] + str(int(l[x][1:]) + 1)
适用于任何号码,如果" a" part更长,将l[x][**1**:]
调整为无数字符串的长度。
答案 1 :(得分:0)
我认为你最好的选择是使用' 2d-list' (我不知道这是否是Python中的正确术语):
myList = [['a',1],['a',2],['a',3]...]
您将使用print(myList[n][0] + str(myList[n][1]))
打印元素,其中n =您要打印的元素。增加'数字组件'如果你想将它递增1,你会使用myList[n][1] += 1
。
答案 2 :(得分:0)
此解决方案适用于您提供的示例:
import re
lst = ['a1', 'a2', 'a3']
def increment(word):
return re.findall('[a-z]+', word)[0] + str(int(re.findall('\d+', word)[0])+1)
print([increment(i) for i in lst])
#['a2', 'a3', 'a4']
答案 3 :(得分:0)
请尝试以下代码
import re
lst = ['a1', 'a2', 'a3']
print map(lambda item:(item[0] + str(int(re.search(r'\d+', item).group())+1)), lst)
此代码使用正则表达式查找列表的每个元素中的整数值,并递增整数值并连接相应的字符串值。
参考文献: -