Я пытаюсь найти элементы в списках списка и использовать элементы для расчета. Но произошло TypeError: 'float' object is not subscriptable
.python найти элементы в списках списка и объект «float» не подлежит индексированию
Вот вопрос/списки:
history_lists=[[1,2,3,4],[2,3,1],[5,8,0,1]]
Я хочу, чтобы найти последние два элемента в каждом списке history_lists
, и вычислить среднее значение.
Вот мои коды:
def get_question(self):
combined_lists_history.append(var1)
combined_lists_history.append(var2)
history_lists = [[] for _for _ in range(max(combined_lists_history[1::2]))]
for i in range(1, len(combined_lists_history),2):
history_lists[combined_lists_history[i]-1].append(combined_lists_history[i-1])
# this codes are for recreating a list of lists
# combined_lists_history = [1,**1**,3,**1**,5,**3**,4,**1**,2,**2**,3,**2**,1,**2**,8,**3**,0,**3**,1,**3**,2,**1**,]
# history_lists=[[1,2,3,4],[2,3,1],[5,8,0,1]]
def get_avg(self):
for i, lst in enumerate(history_lists):
(history_lists[i][-1] + history_lists[i][-2])/2.0
# for each list in history_lists, retrieve last two item
Я неуверен об ошибке, но в любом случае я не думаю, что ваша программа будет делать то, что вы ожидаете. У вас есть цикл for с оператором return. Это означает, что программа будет только когда-либо идти в цикле и возвращаться. ваш весь блок кода эквивалентен 'return (history_lists [0] [- 1] + history_lists [0] [- 2])/2.0'. Может быть, вы хотите печатать вместо возврата? Или хранится где-то и распечатывать все это в конце цикла? – bouletta
Почему 'return'? Если вы хотите создать генератор, используйте «yield». Кроме того, не называйте переменную 'list'. 'list (map (lambda x: sum (x [-2:])/2.0, history_lists))' должен доставить вас далеко. – Abdou
ошибка не указана в коде, который вы указали. Полный стек и код, пожалуйста? –