Работа со списками

couch_potato

Новичок
Пользователь
Июл 25, 2020
5
2
3
Есть список содержащий другие списки(одинаковой длины) с числами. В конце каждого списка(кроме основного) есть маркер. Нужно сложить все числа в списках с одинаковыми маркерами по индексам. Подскажите что-нить, пожалуйста
 
Последнее редактирование:

couch_potato

Новичок
Пользователь
Июл 25, 2020
5
2
3
Пришлось вот так делать:

Python:
result.append(['!']*4)

marker = 1.0
C, P, F, CRBH = 0, 0, 0, 0

for i in result:
    if i[-1] == marker:
        C += i[0]
        P += i[1]
        F += i[2]
        CRBH += i[3]
    else:
        print(*map(int, [C, P, F, CRBH]))
        C, P, F, CRBH = i[0], i[1], i[2], i[3]
        marker += 1

Мыслей как это можно в пару строк вместить нет(
 
Последнее редактирование модератором:
  • Мне нравится
Реакции: Student

couch_potato

Новичок
Пользователь
Июл 25, 2020
5
2
3
Имея 2 списка(без маркеров) одинаковой длины, можно сделать так:

a = [1, 2, 3]
b = [4, 5, 6]

c = [x+y for x, y in zip(a, b)]
print(c) #[5, 7, 9]

Можно ли что-то подобное сделать в моем случае?
 
  • Мне нравится
Реакции: Student

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
Разве что то не работает в вашем примере?
 

couch_potato

Новичок
Пользователь
Июл 25, 2020
5
2
3
Разве что то не работает в вашем примере?
Работает, но как мне применить такой подход к такому списку:

[[560.0, 12.8, 1.6, 124.8, 1.0], [872.5, 32.5, 82.5, 0.0, 1.0], [557.7, 20.9, 42.9, 22.0, 1.0], [85.0, 12.5, 4.0, 0.0, 1.0], [330.55, 3.85, 23.65, 25.3, 1.0], [315.6, 25.8, 18.0, 2.82, 2.0], [296.0, 20.0, 24.0, 0.0, 2.0], [240.075, 7.755, 15.95, 0.825, 2.0], [171.6, 7.04, 4.84, 22.88, 2.0], [240.075, 7.755, 15.95, 0.825, 2.0], [384.8, 15.2, 36.0, 0.0, 2.0], [532.5, 37.5, 42.5, 0.0, 2.0], [576.0, 20.8, 3.2, 115.2, 2.0], [541.2, 20.76, 19.2, 71.4, 2.0], [384.8, 15.2, 36.0, 0.0, 2.0], [822.0, 19.2, 61.2, 48.6, 2.0], [459.2, 6.16, 30.56, 39.6, 2.0], [267.2, 6.88, 3.84, 51.2, 3.0], [822.0, 19.2, 61.2, 48.6, 3.0], [212.0, 5.6, 14.8, 14.4, 3.0], [162.8, 5.94, 4.4, 24.464000000000002, 3.0], [94.8, 14.6, 4.0, 0.0, 3.0], [347.0, 10.0, 2.6, 61.0, 3.0], [270.4, 20.8, 20.8, 0.0, 3.0], [270.0, 5.4, 18.9, 18.55, 3.0], [860.0, 31.25, 3.25, 176.25, 3.0], [872.5, 32.5, 82.5, 0.0, 3.0], [347.0, 10.0, 2.6, 61.0, 3.0], [270.0, 5.4, 18.9, 18.55, 3.0], [424.0, 11.2, 29.6, 28.8, 3.0], [326.4, 27.0, 18.0, 2.82, 4.0], [384.8, 15.2, 36.0, 0.0, 4.0], [254.4, 9.48, 1.56, 51.96, 4.0], [171.6, 5.367999999999999, 5.28, 24.816, 4.0], [254.4, 9.48, 1.56, 51.96, 4.0], [338.0, 26.0, 26.0, 0.0, 4.0], [330.55, 3.85, 23.65, 25.3, 4.0], [1344.0, 50.8, 2.4, 309.6, 4.0], [543.0, 58.0, 35.0, 0.0, 4.0], [541.2, 20.76, 19.2, 71.4, 4.0], [384.8, 15.2, 36.0, 0.0, 4.0], [267.2, 6.88, 3.84, 51.2, 5.0], [459.2, 6.16, 30.56, 39.6, 5.0], [369.0, 23.5, 30.5, 0.0, 5.0], [278.85, 10.45, 21.45, 11.0, 5.0], [171.6, 6.6, 5.28, 24.816, 5.0], [278.85, 10.45, 21.45, 11.0, 5.0], [416.0, 12.0, 20.8, 44.0, 5.0], [170.0, 25.0, 8.0, 0.0, 5.0], [576.0, 20.8, 3.2, 115.2, 5.0], [543.0, 58.0, 35.0, 0.0, 5.0], [369.0, 23.5, 30.5, 0.0, 5.0], [557.7, 20.9, 42.9, 22.0, 5.0], [822.0, 19.2, 61.2, 48.6, 5.0], [267.2, 6.88, 3.84, 51.2, 6.0], [127.2, 4.74, 0.78, 25.98, 6.0], [338.0, 26.0, 26.0, 0.0, 6.0], [171.6, 7.04, 4.84, 22.88, 6.0], [94.8, 14.6, 4.0, 0.0, 6.0], [127.2, 4.74, 0.78, 25.98, 6.0], [330.55, 3.85, 23.65, 25.3, 6.0], [822.0, 19.2, 61.2, 48.6, 6.0], [860.0, 31.25, 3.25, 176.25, 6.0], [142.2, 21.9, 6.0, 0.0, 6.0], [254.4, 9.48, 1.56, 51.96, 6.0], [170.0, 25.0, 8.0, 0.0, 6.0], [416.0, 12.0, 20.8, 44.0, 6.0], [330.55, 3.85, 23.65, 25.3, 6.0], [315.6, 25.8, 18.0, 2.82, 7.0], [481.0, 19.0, 45.0, 0.0, 7.0], [270.6, 10.38, 9.6, 35.7, 7.0], [270.6, 10.38, 9.6, 35.7, 7.0], [171.6, 5.367999999999999, 5.28, 24.816, 7.0], [369.0, 23.5, 30.5, 0.0, 7.0], [424.0, 11.2, 29.6, 28.8, 7.0], [560.0, 12.8, 1.6, 124.8, 7.0], [532.5, 37.5, 42.5, 0.0, 7.0], [541.2, 20.76, 19.2, 71.4, 7.0], [184.5, 11.75, 15.25, 0.0, 7.0], [270.0, 5.4, 18.9, 18.55, 7.0], [416.0, 12.0, 20.8, 44.0, 7.0], [267.2, 6.88, 3.84, 51.2, 8.0], [822.0, 19.2, 61.2, 48.6, 8.0], [347.0, 10.0, 2.6, 61.0, 8.0], [222.0, 15.0, 18.0, 0.0, 8.0], [158.4, 6.6, 4.4, 22.88, 8.0], [189.6, 29.2, 8.0, 0.0, 8.0], [347.0, 10.0, 2.6, 61.0, 8.0], [102.0, 15.0, 4.8, 0.0, 8.0], [270.0, 5.4, 18.9, 18.55, 8.0], [1344.0, 50.8, 2.4, 309.6, 8.0], [543.0, 58.0, 35.0, 0.0, 8.0], [694.0, 20.0, 5.2, 122.0, 8.0], [102.0, 15.0, 4.8, 0.0, 8.0], [330.55, 3.85, 23.65, 25.3, 8.0], [541.2, 20.76, 19.2, 71.4, 9.0], [136.0, 20.0, 6.4, 0.0, 9.0], [822.0, 19.2, 61.2, 48.6, 9.0], [267.2, 6.88, 3.84, 51.2, 9.0]]

Последнее значение в каждом списке - маркер(от 1.0 до 9.0), все списки с одинаковыми маркерами нужно поиндексно сложить, т.е должно получиться 9 списков с 4 значениями в каждом(маркеры можно через срезы повыкидывать).
Я интуитивно догадываюсь, что это можно как то через listcomp. с zipОМ провернуть, но мне сложновато такой listcomp. собрать. А может вообще какая-нить либра есть для этого
 

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