我有以下列表:
ll = ['listA_5_val','listB_15_val','listC_25_val']
我想基于此创建一个新列表:
new_list = [5,15,25]
我们从每个列表中提取了数字。我可以为这样的单个元素执行此操作:
ll[0][6:-4]
如何对整个列表执行此操作?
答案 0 :(得分:2)
>>> ll = ['listA_5_val','listB_15_val','listC_25_val']
>>> [int(x[6:-4]) for x in ll]
[5, 15, 25]
>>> [int(x.split('_')[1]) for x in ll]
[5, 15, 25]
答案 1 :(得分:1)
当然,通过列表理解,可以这样做:
arr = [int(i[6:-4]) for i in ll]
并且会导致:[5, 15, 25]
答案 2 :(得分:1)
对于每个元素,更好的方法之一是使用str.split
将元素分割为三个部分,然后将中间部分转换为整数:
int(element.split("_")[1])
要为每个元素执行此操作,最pythonic的方法是使用列表推导:
new_list = [int(element.split("_")[1]) for element in ll]
答案 3 :(得分:1)
如果字符串中只有一个时间数字:
import re
ll = ['listA_5_val','listB_15_val','listC_25_val']
[ re.findall('\d+',x)[0] for x in ll ]