我有一个像['-1', '1,2,3', '2']
这样的列表,我想提取其中的所有整数。
我不知道列表中每个位置的整数数,即列表也可以是['2,3,4','1,2,3','-1']
但它永远不会有空字符串。
所以我希望答案应该是[2,3,4,1,2,3,-1]
在复杂性和代码减少方面,最好的方法是什么。
...谢谢
答案 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%。
不是一个大的,但存在差异