Получение списка

Диер

Новичок
Пользователь
Сен 30, 2020
2
0
1
здравствуйте

как получить среднее арифмеическое каждых двух элементов в списке?
есть код:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in range(len(a)):
b.append((a[t]+a[t+1])/2)


код работает, но по понятным причинам выходит за границы списка и потому процесс и следующие инструкции не продолжаются. принт мне не нужен, результат я далее вставлю в текстовой виджет.
как все это сделать правильно и чтобы он остановил вычисление на последних 2-х элементах включительно?
на выхлопе должно получиться что b=[65, 55, 45, 35, 25, 15, 5]
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Python:
b = [sum(pair) / 2 for pair in zip(a, a[1:])]
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 642
472
83
здравствуйте

как получить среднее арифмеическое каждых двух элементов в списке?
есть код:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in range(len(a)):
b.append((a[t]+a[t+1])/2)


код работает, но по понятным причинам выходит за границы списка и потому процесс и следующие инструкции не продолжаются. принт мне не нужен, результат я далее вставлю в текстовой виджет.
как все это сделать правильно и чтобы он остановил вычисление на последних 2-х элементах включительно?
на выхлопе должно получиться что b=[65, 55, 45, 35, 25, 15, 5]
Python:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in a:
    tt = a.index(t)+1
    if tt == len(a):
        break
    b.append((t + a[tt]) / 2)
 

Диер

Новичок
Пользователь
Сен 30, 2020
2
0
1
Python:
b = [sum(pair) / 2 for pair in zip(a, a[1:])]
как и всегда, всё то, над чем чешешь голову час оказывается элементарным, спасибо большое

Python:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in a:
    tt = a.index(t)+1
    if tt == len(a):
        break
    b.append((t + a[tt]) / 2)
ваш код тоже работает, спасибо вам большое
 

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
здравствуйте

как получить среднее арифмеическое каждых двух элементов в списке?
есть код:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in range(len(a)):
b.append((a[t]+a[t+1])/2)


код работает, но по понятным причинам выходит за границы списка и потому процесс и следующие инструкции не продолжаются. принт мне не нужен, результат я далее вставлю в текстовой виджет.
как все это сделать правильно и чтобы он остановил вычисление на последних 2-х элементах включительно?
на выхлопе должно получиться что b=[65, 55, 45, 35, 25, 15, 5]
Можно просто ограничить количество прохождений цикла (-1):

Python:
a=[70, 60, 50, 40, 30, 20, 10, 0]
b=[]
for t in range(len(a)-1):
    b.append((a[t]+a[t+1])/2)
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
for t in range(len(a)-1): b.append((a[t]+a[t+1])/2)
b = [(x + a[i]) / 2 for i, x in enumerate(a[:-1], 1)]
 

Форум IT Специалистов