Вместо того, чтобы иметь от col0
до col8
в качестве отдельных списков, вы можете иметь список списков, где cols = [[]]
. У вас есть блок
for line in DataFile:
valstrings = line.split()
col0.append(float(valstrings[0]))
col1.append(float(valstrings[1]))
...
, который является наивным подходом к работе с каждым элементом в valstrings
. Еще один для l oop может быть добавлен в for line in DataFile:
l oop, который вставляет каждое значение столбца в соответствующий массив.
for line in DataFile:
valstrings = line.split()
for i,val in enumerate(valstrings):
cols[i].append(float(val))
Я не совсем уверен, как раздел с UserVals.append(col0)
и др c. используется, но я бы попытался использовать заголовки столбцов в качестве ключей в словаре, чтобы вы могли ссылаться на каждый столбец, не зная, сколько их, и это должно сделать ваш код немного более читабельным.
Первый блок кода, безусловно, можно очистить, чтобы он выглядел так:
file_name = 'C:/Users/gwong/Documents/ME 021/CylindricalRollerBearingData_01.txt'
answer = 'y'
# Note that cols starts as a list, and lists are appended to it later
cols = []
with open(file_name, 'r') as DataFile:
Title = DataFile.readline()
header = DataFile.readline().split()
units = DataFile.readline().split()
for line in DataFile:
valstrings = line.split()
# Edit made here to initialize cols list of lists
for col in valstrings:
cols.append([])
for i,val in enumerate(valstrings):
cols[i].append(float(val))
И я думаю, что нижнюю часть можно изменить на:
while (answer == 'y'):
UserMins =[]
UserMaxs =[]
ans = 'y'
while (ans == 'y'):
UserVals = []
for col in cols:
UserVals.append(col)
Я не проверял это, но вы возможно, придется инициализировать элементы массива cols
пустыми списками, прежде чем начать ссылаться на cols[i]