在python中把一个List变成一个数组。

问题描述 投票:0回答:4

所以我有一个输入文本文件,看起来像这样。

0,0,0,0  
0,0,1,0  
0,1,0,0  
0,1,1,1  
1,0,0,0  
1,0,1,0  
1,1,0,1  
1,1,1,1  

我已经成功地将所有这些行数读入一个列表,它看起来像这样。

['0,0,0,0' , '0,0,1,0' , '0,1,0,0' , '0,1,1,1' , '1,0,0,0' , '1,0,1,0' , '1,1,0,1', '1,1,1,1'] 

我创建这个列表的代码是

fileName = input("Filename:")
    file = open(fileName,'r')
    training = np.array(file.read().splitlines())
    for i in range(len(training)):
        a.append(training[i])

然而,我想知道如何才能把列表变成这样的东西。

[ [0,0,0,0] , [0,0,1,0] , [0,1,0,0] , [0,1,1,1] , [1,0,0,0] , [1,0,1,0] , [1,1,0,1] , [1,1,1,1] ]

如果还不清楚的话,我的列表有字符串类型的值,但我希望类型是int,也是上面的格式。

请告诉我是否有办法通过修改我的代码或做某种转换来得到这个最终结果。

python arrays
4个回答
1
投票

你也可以使用:

with open("input.txt") as f:
    l = [[int(x) for x in x.split(",")] for x in f]

[[0, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 1, 0], [1, 1, 0, 1], [1, 1, 1, 1]]

演示


1
投票

您可以 split 弦上 , 然后转换为 int:

a = [[int(n) for n in x.split(',')] for x in a]

1
投票

你可以使用以下方法

training_arr = []
fileName = input("Filename:")
with open(fileName,'r') as fileName:
    training_arr = [[int(numeric_string) for numeric_string in line.split(',')] for line in fileName.readlines()]

print(training_arr)

1
投票
fileName = input("Filename:")
with open(fileName) as f:
    lines = f.readlines()
arr=list()
for line in lines:
    arr.append(list(map(int, line.rstrip().split(","))))

arr 是你想要的 list of lists. 我正在做的是读取文件行并将其存储在 lines 然后,循环往复 lines 并将每一行都以 , 然后将其映射为 int. 如果你不执行地图功能,那么它将会被称为 "地图"。str.

注意,我使用的是 rstrip() 来删除尾部的新行字符。


0
投票

你可以先抓住数组中的每个元素,然后再抓住字符串中的每个元素。

例如,你可以先抓取 '0,0,0,0' 分为 ','叠加.. 在得到n个数组后,你可以把它们全部加到一个数组中去。.

P.S.你可能想在将字符串添加到数组之前将它们赋予int,应该考虑在你分别抓取每个0之后再这样做!

© www.soinside.com 2019 - 2024. All rights reserved.