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.])