Как добавлять числа в ваш список, постепенно, а также сортировать от самого низкого до самого высокого значения? - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь записать код во-первых, порядковые номера от низшего к высшему (например, от 1, 3, 2, 4, 5 до 1, 2, 3, 4, 5).Во-вторых, я хотел бы постепенно добавлять номера в список.например.

1
3
6
10
15

Я уже пытался использовать функцию sum, затем функцию sorted, но мне было интересно, могу ли я аккуратно написать их в коде, чтобы все получилось.

Addition = [1, 13, 166, 3, 80, 6, 40]
print(sorted(Addition))

Мне удалось отсортировать числа по горизонтали, но я не смог добавить их по вертикали.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы можете использовать itertools.accumulate с sorted:

import itertools

mylist = [1, 2, 3, 4, 5]
result = list(itertools.accumulate(sorted(mylist)))
# result: [1, 3, 6, 10, 15]

Действие по умолчанию - operator.add, но вы можете настроить его.Например, вы можете запустить продукт вместо суммы, если вам это нужно:

import itertools
import operator

mylist = [1, 2, 3, 4, 5]
result = list(itertools.accumulate(sorted(mylist), operator.mul))
# result: [1, 2, 6, 24, 120]
0 голосов
/ 21 января 2019

Видимо, вам нужен cumulative addition. Вы можете кодировать простой, используя простой цикл и yield результаты на ходу

def cumulative_add(array):
    total = 0
    for item in array:
        total += item
        yield total


>>> list(cumulative_add([1,2,3,4,5]))
[1, 3, 6, 10, 15]

В зависимости от ваших целей, вы также можете использовать библиотеку, такую ​​как pandas, в которой уже есть накопленная сумма, написанная для вас.

Например,

>>> s = pd.Series([1,2,3,4,5])
>>> s.cumsum()

0     1
1     3
2     6
3    10
4    15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...