У меня есть список, каждый элемент в списке в списке, содержащем 2 числа, разделенных запятой.
Мне приходится относиться к первым элементам в каждом списке по отношению друг к другу, так же, как ко второмуединицы.
Учитывая список, я должен заменить первое число каждого вложенного списка на среднее число, первое число в списке справа и первое число в списке слева.то же самое со вторым номером.Для первого вложенного списка я должен заменить его на среднее значение или само число и его соответствующий номер в списке справа.Для последнего то же самое со списком слева.
Например:
[[1, 1], [7, 7], [20, 20], [9, 9], [-12, -12]]
будет:
[[(1+7)/2, (1+7)/2], [(7+1+20)/3, (7+1+20)/3], [(20+7+9)/3, (20+7+9)/3], [(9+20-12)/3, (9+20-12)/3], [(-12+9)/2, (-12+9)/2]]
и, таким образом:
[[4, 4], [9, 9], [12, 12], [5, 5], [-2, -2]]
потому что мы возвращаем целые числа.
У меня есть код, но он печатает только среднее значение, что немного неуклюже.Пожалуйста, помогите мне указать правильное направление для расчета элементов и создания нового списка.
Кроме того, я хотел бы использовать только циклы и базовые представления списка, чтобы я мог понять логику.
Это мой код:
def lpf(lst):
for i in range(len(lst)):
for j in range(2):
if i == 0:
lst[i][j] = int((lst[i][j] + lst[i+1][j]) / 2)
elif 0 < i < (len(lst) - 1):
lst[i][j] = int((lst[i-1][j] + lst[i][j] + lst[i+1][j]) / 3)
elif i == len(lst) - 1:
lst[i][j] = int((lst[i-1][j] + lst[i][j]) / 2)
return lst
И мы должны предположить, что элементы в списке не всегда будут одинаковыми.
Кажется, я понимаюпроблема моего кода - как только я меняю первый элемент, следующая итерация происходит с новым элементом, а не с оригиналом.И все же я не могу думать о том, как решить эту проблему.