Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表中相互减去?_Python_List - Fatal编程技术网

Python 如何从列表中相互减去?

Python 如何从列表中相互减去?,python,list,Python,List,我有两个函数,分别使用下面的代码输出两个列表。我正试图从一个列表中减去另一个列表 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)

我有两个函数,分别使用下面的代码输出两个列表。我正试图从一个列表中减去另一个列表

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)

当我打电话给ok7时,我得到:

[1.0833333333333333, 1.7178571428571427, 2.380728993228994, 3.05849519543652, 3.7438909037057684, 4.433147092589173]
同样,对于uk7,我得到:

[2.083333333333333, 2.7178571428571425, 3.380728993228993, 4.058495195436521, 4.743890903705768, 5.433147092589174]
我尝试执行以下操作:uk7-ok7,但出现以下错误:

---------------------------------------------------------------------------
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'
如何解决此问题?

用于将列表的元素配对,并使用列表理解生成输出列表:

difference = [u - o for u, o in zip(uk(7), ok(7))]
zip通过组合两个列表uk7和ok7的元素生成元组:

,ok7的第一项> ,ok7的第二项> ... 在for循环中,元组中的两个值被解包为u和o,并且差异列表由结果u-o值构建


搜索关于“列表理解”的信息如果你不知道,你会发现很多信息。

你不能从另一个列表中减去列表。尝试使用或压缩


这不是要修理的东西。如果您想要元素操作,请尝试:[l1-l2 for l1,zipuk7中的l2,ok7]或使用numpyTo帮助您理解Python在这里抛出错误的原因,请注意,-操作应该对两个列表做什么并不明显。也许元素减法从b[0]中减去a[0]。。。。但是如果列表长度不同怎么办?如果一个列表是空的呢?你需要自己实现你正在寻找的行为。可能的重复除非OP打算通过执行uk7-ok7来模拟集合差异(这是不可能的),否则问题不是重复。
>>> 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.])