将列表转换为Python 3列表

bob*_*ora 2 python text list text-files python-3.x

我有一个由汽车详细信息组成的列表文件.

例如

1000001 Volvo v8
1000002 Mazda 2.0
Run Code Online (Sandbox Code Playgroud)

jme*_*etz 5

听起来你需要split每条线; 你可以使用列表理解,如下所示

cars = [line.split() for line in open("Cars.txt")]
Run Code Online (Sandbox Code Playgroud)

如评论中所述; 你想要数字的数字表示.为此,您需要将数字列转换为数字.例如

for i in range(len(cars)):
    cars[i][0] = int(cars[i][0])
    cars[i][-1] = int(cars[i][-1])
Run Code Online (Sandbox Code Playgroud)

那么例如cars[0][0]将是一个数字.或者,如果数字始终为正整数,则可以将其浓缩为:

readline = lambda l: [int(n) if n.isdigit() else n for n in l.split()]
cars = [[ readline(line) for line in open("Cars.txt")]
Run Code Online (Sandbox Code Playgroud)

对于任何更复杂的数据文件读取,您可能想要使用例如pandas.

发电机

正如zondo在评论中指出的那样,你可以考虑使用一个generator代替,它不会将所有数据加载到内存中(而是在请求时"生成"每个元素); 这可以通过交换完成[]()在理解:

cars = (line.split() for line in open("Cars.txt"))
Run Code Online (Sandbox Code Playgroud)

然后你仍然可以像列表一样迭代汽车,但你不能索引到生成器,就像你可以列表一样.