2013-04-22 157 views
1

我有一个列表的列表,里面的列表是多个字符串。例如, [['34,53,53,21'], ['43,65,12,53'], ['54,23,31,34']]如何将一串数字转换为一个整数列表?

和我想要的结果看起来像: [[34,53,53,21], [43,65,12,53], [54,23,31,34]] 里面的所有整数。我试过很多代码,但不断收到不同的错误消息。

另外,如果一些内部数字是浮动的呢?如: [['34,53.09,53.56,21.98'], ['43,65.67,12.45,53.45'], ['54,23.34,31.23,34.76']]

+1

您应该发布您尝试的内容,以便我们更正您的错误。 – 2013-04-22 05:20:52

回答

3
>>> L = [['34,53,53,21'], ['43,65,12,53'], ['54,23,31,34']] 
>>> [[int(y) for y in x[0].split(',')] for x in L] 
[[34, 53, 53, 21], [43, 65, 12, 53], [54, 23, 31, 34]] 

对于浮动:

>>> L = [['34,53.09,53.56,21.98'], ['43,65.67,12.45,53.45'], ['54,23.34,31.23,34.76']] 
>>> [[float(y) for y in x[0].split(',')] for x in L] 
[[34.0, 53.09, 53.56, 21.98], [43.0, 65.67, 12.45, 53.45], [54.0, 23.34, 31.23, 34.76]] 
+0

如果某些数字在[['34,53.33,53.09']]字符串中漂浮,你会怎么做? – 2013-04-22 05:24:09

+0

@JimDavis:那么只需要......在float [y]中对y [x] ...'进行浮点运算。 – 2013-04-22 05:24:51

+1

@JimDavis哦,你是说有些是浮点数,有些是整数等等,实际上你可以在'x [0]'上使用'ast.literal_eval',因为它已经是一个元组的正确结构。但是,你是否遇到了所有浮动问题? @JoelCornett建议正确的东西 – jamylak 2013-04-22 05:26:13

3
[[int(y) for y in x[0].split(',')] for x in lst] 

关于Python 2.x中,你可以使用:

而且在某些方面,具有内部列表琴弦不方便。您可以使用chain将其删除:

from itertools import chain 
[[int(y) for y in x.split(',')] for x in chain.from_iterable(lst)] 
相关问题