从列表中提取整数

时间:2010-12-14 16:40:09

标签: python

我有一个像['-1', '1,2,3', '2']这样的列表,我想提取其中的所有整数。 我不知道列表中每个位置的整数数,即列表也可以是['2,3,4','1,2,3','-1']但它永远不会有空字符串。 所以我希望答案应该是[2,3,4,1,2,3,-1]

在复杂性和代码减少方面,最好的方法是什么。

...谢谢

4 个答案:

答案 0 :(得分:3)

map(int, ','.join(l).split(','))

其中l是您的列表。

答案 1 :(得分:0)

这是一个理解:

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

答案 2 :(得分:0)

另一个列表理解。

>>> l = ['-1', '1,2,3', '2']
>>> [ int(x) for s in l for x in s.split(',')]
[-1, 1, 2, 3, 2]

答案 3 :(得分: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%。 不是一个大的,但存在差异