2 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以zip將列表放在一起,用于groupby按f值對對進(jìn)行分組,然后a對每個(gè)組的值求和。然后你只需要將它們解壓縮回單獨(dú)的列表
from itertools import groupby
from operator import itemgetter
groups = groupby(zip(f, a), key=itemgetter(0))
f_a_generator = ((k, sum(map(itemgetter(1), pairs))) for k, pairs in groups)
f1, a1 = zip(*f_a_generator) # map(list, ...) If you need them as lists
print(f1, a1, sep='\n')
# (10, 25, 50, 75, 100, 1000, 1100)
# (1, 3, 6, 5, 3, 25, 10)
要在評論中回答您的問題,您可以更改行
sum(map(itemgetter(1), pairs)))
調(diào)用某些函數(shù),而不是sum:
def logarithmic_sum(values):
return 10*np.log10(sum((10**(val/10)) for val in values))
groups = groupby(zip(f, a), key=itemgetter(0))
f_a_generator = ((k, logarithmic_sum(map(itemgetter(1), pairs))) for k, pairs in groups)
f1, a1 = zip(*f_a_generator)
print(f1, a1, sep='\n')
# (10, 25, 50, 75, 100, 1000, 1100)
# (1.0000000000000002, 2.999999999999999, 6.124426027943397, 5.0, 2.999999999999999, 16.193310480660944, 8.010299956639813)

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
對于第一個(gè)數(shù)組情況:
for i in range(1, len(f)-2):
if f[i] == f[i-1]:
del f[i]
print(f)
- 2 回答
- 0 關(guān)注
- 229 瀏覽
添加回答
舉報(bào)