我正在尝试导入信息以创建 2D 列表,但我很难用信息填充列表。 我在尝试导入信息以创建列表时陷入困境
ROW = 3
COLS = 4
myInfo = ('myInfoFile.txt', 'r')
name = myInfo.readline().rsrip('n')
while name != '':
address = myInfo.readline()
telNum = float(myInfo.readline())
email = myInfo.readline()
myInfo.close()
list1 = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
for r in range(ROWS):
for c in range(COLS):
#this is the main area
list1[r][c] = myInfo
print(list1)
假设您有一个包含 2D 矩阵的文本文件,这工作:
data_file = open('data.txt')
data = data_file.readlines()
for i in range(len(data)) :
data[i] = list(map(float, data[i].split()))
print(data)
如果您使用的是 python2,请将列表参数放在 map 前面。
以下是数据的内容.txt :
1 2 34 5 67 8 9
输出:
[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]
两件事是错误的
- 读取文件时未分配数据
- 您在使用数组时分配一个封闭的文件描述符试试这个
info=[[]*COLS for i in range(ROWS)] for i in range(ROWS): for j in range(COLS): info[i][j]=filename.readline #if float needed info[i[[j]=float(info[i][j])
因为 Python 中的数组是动态调整大小的,所以你可以使用 <list>.append()
函数向数组添加一些东西。向list1
添加数组允许矩阵内出现未指定数量的行。下面是一些修改后的代码:
# The ROW and COLUMN variables aren't necessary.
myInfo = open('filetxt.txt', 'r')
list1 = [] # Not required to define the size of the array using zeros
while(True):
name = myInfo.readline().rstrip('n')
if(name != ''): # Check for missing names
address = myInfo.readline().rstrip('n')
telNum = float(myInfo.readline())
email = myInfo.readline().rstrip('n')
else:
break
list1.append([name, address, telNum, email])
print(list1)
使用以下测试数据,输出为:[['Alice', '1 River Drive', 3.14159265, 'alice@example.net'], ['Bob', '2 Mountain Way', 127.001, 'bob@example.net'], ['Carl', '33 Oak Tree Avenue', 987.654321, 'carl@example.net']]
具有以下输入:
Alice
1 River Drive
3.14159265
alice@example.net
Bob
2 Mountain Way
127.001
bob@example.net
Carl
33 Oak Tree Avenue
987.654321
carl@example.net