В исходном коде вы перебираете элементы подсписка и используете их в качестве индексов, поскольку элемент подсписка является плавающей точкой, когда вы используете их в качестве индекса, т.е. вы делаете tumor_size[2.6]
, следовательно, вы получаете ошибку TypeError: list indices must be integers or slices, not float
Также должно быть and
вместо &
, чтобы связать условные выражения вместе
Чтобы это исправить, вам нужно перебрать подсписки каждого списка и вычислить максимум, учитывая, что список непустой
tumor_size = [[2.6,3.65],[],[2.0,2.9,1.7,2.5,1.3]]
#Find max of each sublist given sublist is non-empty
res = [max(li) for li in tumor_size if li]
print(res)
Выход будет
[3.65, 2.9]
Или, если мы перейдем к вашему первоначальному подходу, вы можете избавиться от внутреннего цикла, проверить наличие maxlen только в том случае, если подсписок не пустой, и выполнить сравнение
tumor_size = [[2.6,3.65],[],[2.0,2.9,1.7,2.5,1.3]]
T_stage_list=[]
for i in tumor_size:
#Default value is T0
T_stage = "T0"
#If sublist is non-empty
if i:
#Get max and perform comparison
maxlen = max(i)
if (maxlen>2.0 and maxlen<3.0):
T_stage = "T2a"
else:
T_stage = "T2b"
#Add T_stage
T_stage_list.append(T_stage)
print(T_stage_list)
Вывод будет
['T2b', 'T0', 'T2a']