[英]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 循環中,元組中的兩個值被解包為u
和o
, difference
列表由生成的u - o
值構建。
如果您不了解“列表理解”,請搜索它,您會發現很多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.