从列表中提取整数

2 投票
4 回答
4758 浏览
提问于 2025-04-16 08:31

我有一个列表,比如 ['-1', '1,2,3', '2'],我想从中提取出所有的整数。
我不知道列表中每个位置有多少个整数,也就是说,列表可能是 ['2,3,4','1,2,3','-1'],但它永远不会是空字符串。
所以我希望得到的结果是 [2,3,4,1,2,3,-1]

请问有什么好的方法可以做到这一点,既要考虑复杂度,又要代码尽量少。

谢谢...

4 个回答

0

这两个东西不一样。测试可以给出真实的结果。
在这种情况下,使用map()比列表推导式要快。

from time import clock
from random import randint

li = [ ', '.join([str(randint(-30,30)) for i in xrange(randint(1,8))])
       for j in xrange(1000) ]

A,B = [],[]

for fois in xrange(20):
    te = clock()
    res1 = map(int, ','.join(li).split(','))
    A.append( clock()-te )

    te = clock()
    new_list = [ int(i) for i in ','.join(li).split(',') ]
    B.append( clock()-te )

print '{:.1%}.'.format(min(B)/min(A))

结果是:115.1%。
虽然这个差距不大,但确实有区别。

0

这里有一个列表推导式:

new_list = [ int(i) for i in ','.join(old_list).split(',') ]
3
map(int, ','.join(l).split(','))

这里的 l 是你的列表。

撰写回答