二维列表理解Python 2

时间:2018-01-11 11:25:57

标签: python python-2.7 list sorting multidimensional-array

我想知道如何将列表中的字符串转换为整数。

例如:

输入:

data = [
['1', '-160'],
['2', '-3000'],
['4', '-2'],
['5', '0.27'], ]

data = [int(a) for a in data[0]] #This converts only the first row of the list - I need the whole list converted 


print(data)

输出:

[[1, -160], [2, -3000],[4, -2],[5, 0.27]]

这样做的原因是因为我想对列表进行排序,但是当数字有撇号时这不起作用。

我希望有人可以帮助我:)

3 个答案:

答案 0 :(得分:2)

这将是正确的列表理解:

[[float(c) for c in row] for row in data]

请注意,我已将int(...)更改为float(...)以处理输入中的浮动数字。这给出了输出:

[[1.0, -160.0], [2.0, -3000.0], [4.0, -2.0], [5.0, 0.27]]

根据您的评论,如果您的列表中有字母,您还可以在列表理解中添加if语句:

[[float(c) if c.lstrip('-').isdigit() else c for c in row] for row in data ]

答案 1 :(得分:0)

data = [
['1', '-160'],
['2', '-3000'],
['4', '-2'],
['5', '0.27'], ]

print [[int(i), float(j)] for i, j in data]

结果:

[[1, -160.0], [2, -3000.0], [4, -2.0], [5, 0.27]]

答案 2 :(得分:0)

我认为这可以解决您的问题(假设您希望所有值都是整数):

import math
...
result = [[math.floor(float(y)) for y in x] for x in data]

结果

[[1, -160], [2, -3000], [4, -2], [5, 0]]