Как вычесть списки друг из друга? - PullRequest
0 голосов
/ 08 апреля 2019

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

def ok(n):
    results = []
    for n in range (2, n+1):
        s = Sup(n)
        results.append(s)
    return(results)


def uk(m):
    result = []
    for m in range (2, m+1):
        t = Sdown(m)
        result.append(t)
    return(result)
print(ok(7))
print(uk(7))

uk(7) - ok(7)

Когда я звоню, хорошо (7) я получаю:

[1.0833333333333333, 1.7178571428571427, 2.380728993228994, 3.05849519543652, 3.7438909037057684, 4.433147092589173]

Аналогично для Великобритании (7) я получаю:

[2.083333333333333, 2.7178571428571425, 3.380728993228993, 4.058495195436521, 4.743890903705768, 5.433147092589174]

Затем я попытался выполнить операцию: uk (7) - ok (7), но получаю следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-23-3aa3eb52f7a8> in <module>
     18 print(uk(7))
     19 
---> 20 uk(7) - ok(7)

TypeError: unsupported operand type(s) for -: 'list' and 'list'

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Вы не можете вычесть список из другого списка. Попробуйте использовать numpy или Zip

>>> l1 = [1.0833333333333333, 1.7178571428571427, 2.380728993228994, 3.05849519543652, 3.7438909037057684, 4.433147092589173]
>>> l2 = [2.083333333333333, 2.7178571428571425, 3.380728993228993, 4.058495195436521, 4.743890903705768, 5.433147092589174]

>>> import numpy as n
>>> n.array(l2) - n.array(l1)
    array([ 1.,  1.,  1.,  1.,  1.,  1.])
0 голосов
/ 08 апреля 2019

Используйте zip для сопряжения элементов ваших списков и понимание списка для создания выходного списка:

difference = [u - o for u, o in zip(uk(7), ok(7))]

zip возвращает кортежи, комбинируя элементы двух списков uk(7) и ok(7):

  • (<first item of uk(7)>, first item of ok(7)>)
  • (<second item of uk(7)>, second item of ok(7)>)
  • ...

В цикле for два значения в кортеже распаковываются в u и o, а список difference составляется из результирующих значений u - o.

Поиск по «списку», если вы не знаете об этом, вы найдете много информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...