2013-04-05 45 views
0

['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153'] 与上面的列表一样,我想将元素转换为int,我知道仅仅使用[int(x) for x in mylist]将不起作用。所以我的问题是,你如何将我的列表变成一个整数列表。ints ['123 121','42 23','23 23']中的字符串列表

+0

列表中的每个元素represends 2个整数... – 2013-04-05 11:39:02

+3

你想要什么输出? – mgilson 2013-04-05 11:39:28

回答

2

拆分文本第一,然后转换成int:

[map(int, elem.split()) for elem in originallist] 

对于Python 3,凡map()返回一个发电机,而不是一个列表,你可以嵌套列表理解:

[[int(n) for n in elem.split()] for elem in originallist] 

这将在Python 2下同样工作。

快速演示:

>>> originallist = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153'] 
>>> [[int(n) for n in elem.split()] for elem in originallist] 
[[136, 145], [136, 149], [137, 145], [138, 145], [139, 145], [142, 149], [142, 153], [145, 153]] 

您可以通过移动elem.split()环路外列表理解删除筑巢,到最后:

[int(n) for elem in originallist for n in elem.split()] 

这给:

[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153] 
3
>>> L = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153'] 
>>> [int(y) for x in L for y in x.split()] 
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153] 
1

正如我倾向于为了避免嵌套的列表解析(我永远不会记住顺序),我会做很多事情,比如:

from itertools import chain 
x = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153'] 
gen = chain.from_iterable(elem.split() for elem in x) 
integers = [int(elem) for elem in gen] 
+0

我想我只喜欢'chain.from_iterable'当它围绕整个表达式 – jamylak 2013-04-05 11:44:54

1

你可以尝试这样的,

>>> import re 
>>> l=['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']  
>>> map(int, re.findall(r'\d+',' '.join(l))) 
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153] 
+0

你不需要这种方法的正则表达式 – jamylak 2013-04-05 11:48:59

0
>>> L = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153'] 
>>> map(int, ' '.join(L).split()) 
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153] 
相关问题