如何在Python中将列表类型转换为数字类型

时间:2011-04-05 22:22:17

标签: python list types numeric

我有一个外部文件,它是一列浮点数(希望能够将其扩展为将来有多个列)。我想将它导入数组。该文件是一个cvs文件,但它也可以是一个txt文件。

我正在使用:

reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader:
    values = []    
    for col in row: 
        values.append(float(col))
    table.aapend(values)

结果是一个列表[[1.0], [0.98], ......] 我想将List转换为数字数组(1.0, 0.98, ...) 我怎么能这样做?

7 个答案:

答案 0 :(得分:2)

reader = csv.reader(open("e=0.6.csv"))
table = tuple(float(col) for row in reader for col in row)

答案 1 :(得分:1)

为什么要创建一个名为values的新列表?为什么不附加到表格呢?即。

reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader: 
    for col in row: 
        table.append(float(col))

答案 2 :(得分:1)

(1.0, 0.98, ...)元组。这是从中创建元组的一种方法:

>>> l = [[1.0], [0.98]]
>>> tuple(i[0] for i in l)
(1.0, 0.97999999999999998)

答案 3 :(得分:0)

在您的具体情况下,我会跳过此步骤并执行以下操作:

reader = csv.reader(open("e=0.6.csv"))

table = [float(col) for col in row for row in reader]

但是,如果您想使用原始答案,可以这样做:

使用map method

>>> l = [[1.0], [0.98], [3.0]]
>>> map(lambda x: x[0], l)
[1.0, 0.97999999999999998, 3.0]

或列表理解:

>>> [e for subl in l for e in subl]
[1.0, 0.97999999999999998, 3.0]

在任何一种情况下,只需执行tuple(result)

即可将返回的列表转换为元组

答案 4 :(得分:0)

reader = csv.reader(open("e=0.6.csv"))
table = []
for row in reader:
    for col in row: 
        table.aapend(float(col))

答案 5 :(得分:0)

使用列表理解:

>>> l = [[0.1], [0.2], [0.3]]
>>> [x[0] for x in l]
[0.1, 0.2, 0.3]

或地图功能:

>>> map(lambda x:x[0], l)
[0.1, 0.2, 0.3]

或者还原功能:

>>> reduce(lambda x,y: x+y, l, [])
[0.1, 0.2, 0.3]

或发电机:

>>> (x[0] for x in l)
<generator object <genexpr> at 0x1004e00f0>

或者只是将您的号码直接存储在列表中。

答案 6 :(得分:0)

我不明白为什么你在这种情况下使用csv.reader。你说自己,这不是一个真正的csv!只做两个:

map(float, open("e=0.6.csv").readlines())

[float(x) for x in open("e=0.6.csv").readlines()]