繁体   English   中英

如何从列表中减去列表?

[英]How do I subtract lists from each other?

我有两个函数分别使用我在下面编码的内容输出 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)

当我打电话时,ok(7) 我得到:

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

同样对于 uk(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'

我怎样才能解决这个问题?

您不能从另一个列表中减去列表。 尝试使用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.])

使用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 循环中,元组中的两个值被解包为uodifference列表由生成的u - o值构建。

如果您不了解“列表理解”,请搜索它,您会发现很多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM