2015-12-06 15 views
0

У меня есть DATALOG файл в форматеTypeError: «объект Float не Iterable»

41, 3.68, 3.58, 3.71, 3.54, 3.68, 3.79 
42, 3.69, 3.57, 3.73, 3.55, 3.67, 3.78 
43, 3.68, 3.57, 3.73, 3.54, 3.68, 3.79 
44, 3.68, 3.57, 3.73, 3.54, 3.67, 3.79 
45, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78 
46, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78 
47, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78 
48, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78 
49, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78 

Для каждого столбца я пытаюсь найти минимальное значение и соответствующий номер строки.

Но с нижеследующим кодом функция min() дает «нерегулярную ошибку» объекта float.

with open("Datalog.txt", "r") as file: 
    result = [[float(x) for x in line.split(",")] for line in file] 
    for i in range (len(result[0])): 
     for j in range (len(result)): 
      print (result[j][i]) 
      print (min(result[0][i])) 
+0

Пожалуйста, добавьте тег: –

+0

Я новичок в Stackoverflow & it said i need min 1000 credits, чтобы начать пометку python 3.5 .. – crank2giri

ответ

0

мин перебирает список/кортежа в аргументе и дает наименьший элемент в нем, но вы предоставляете его с поплавком, так он пытается перебирать поплавка.

Там нет абсолютно никаких причин, чтобы сделать это, но это не собирается аварии, если вы:

print (min(result[0][i],)) 

так как теперь это не поплавок, а кортеж. Это будет просто распечатать значение результата [0] [я]

Если то, что вы хотите, чтобы получить минимальное значение в каждой строке, что вам нужно сделать:

for i in range (len(result)): 
    print (min(result[i])) 

Если то, что вы хотите, это минимальное в каждом столбце (предполагая, что все строки имеют одинаковое число столбцов), ты должен сделать:

for j in range(len(result[0])) 
    print ('minimum in column ' + str(j) + ':') 
    print (min([result[i][j] for i in range(len(result))])) 

где j- индекс столбца

+0

Я пытаюсь получить минимальное значение каждого столбца, приведенный выше код даст минимальное количество каждого ряд. – crank2giri

+0

@ crank2giri попробуйте тот, что я редактировал сейчас – dietbacon

+0

TypeError: объект 'list' не может быть интерпретирован как целое, выглядит как «J в диапазоне (результат [0]):« должно быть »J в результате (0): « – crank2giri

1

ошибка в том, что в

print (min(result[0][i])) 

result[0][i] - это единственный объект float, а не список, как вы ожидали.

Вместо дать список min:

for j in range (len(result)): 
    print(result[j][0]) 
    print(min(result[j][1:])) 

Диапазон [1:] означает, что все, кроме первого элемента.

Смежные вопросы