【发布时间】:2014-10-10 07:57:15
【问题描述】:
我尝试使用列表推导来替换 for 循环。
原文件是
2 3 4 5 6 3
1 2 2 4 5 5
1 2 2 2 2 4
for循环
line_number = 0
for line in file:
line_data = line.split()
Cordi[line_number, :5] = line_data
line_number += 1
输出是
[[2 3 4 5 6 3]
[1 2 2 4 5 5]
[1 2 2 2 2 4]]
如果改用列表推导,我能想到的是(我必须将数据类型更改为 int,以便可以在程序的后面部分绘制)
Cordi1= [int(x) for x in line.split() for line in data]
但输出是
[1, 1, 1]
但line.split() for line in data实际上是一个列表,如果我尝试
Cordi1 = [int(x) for x in name of the list]
有效,为什么会这样?
【问题讨论】:
-
你可以生成一个带有列表解析的列表,但
Cordi是一个numpy数组。 -
@MartijnPieters,啊,所以我无法生成具有列表理解的二维数组?
-
之后您可以将嵌套列表转换为 2D 数组,但从这些数据生成 numpy 数组可能有更好的选择。
-
请参阅how to convert 2d list to 2d numpy array? 了解转换选项。
-
@MartijnPieters 谢谢,啊,但实际上无论是嵌套二维列表还是 numpy 二维列表,它们都可以很好地绘制。但在未来的应用中,这可能会导致问题。还是谢谢你!
标签: python int output list-comprehension