从python中列表的每个元素中提取

时间:2014-11-15 23:47:21

标签: python list

我有以下列表:

ll = ['listA_5_val','listB_15_val','listC_25_val']

我想基于此创建一个新列表:

new_list = [5,15,25]

我们从每个列表中提取了数字。我可以为这样的单个元素执行此操作:

ll[0][6:-4]

如何对整个列表执行此操作?

4 个答案:

答案 0 :(得分:2)

使用list comprehension

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