将列表内的数字乘以字符串

时间:2019-03-10 03:36:04

标签: python list

我一直在试图找出是否有办法做到这一点

import re
myList = ["a6C"] >>> ["a12C"]

updatedLst=[]


for indx,item in enumerate(myList):
    val=(re.findall('\d+', item))
    myList[indx]=val

print(myList)

我能做到这一点的一种方法是通过硬编码这样的值 如果项目中为“ 6”:

我想用另一种方式做。我知道没有理由使用这样的混合列表或糟糕的设计……我只想找出解决问题的“方法” /逻辑。感谢您的想法和时间。

2 个答案:

答案 0 :(得分:0)

IIUC,使用:

import re
myList = ["a6C"]
for indx, item in enumerate(myList):
    myList[indx] = ''.join([str(int(i)*2) if i.isdigit() else i for i in item])
print(myList)

或者:

import re
myList = ["a6C"]
for indx, item in enumerate(myList):
    myList[indx] = re.sub('\d+',str(int(re.sub('\D+','',item))*2),item)
print(myList)

答案 1 :(得分:0)

我想出了一个效率不高的版本。

import re
strng="ro5e"

#the following variable finds numeric value and saves in variable num
num=re.findall('\d+',strng)

#for item in strng: will not find numeric value because everything will be String there
#Hence the following approach,iterate num
for i in num:
     v=int(i)*2 #using int to convert String to int so that I can multiply
     print(strng.replace(i,str(v)))#again converting to str so that I can replace