簡體   English   中英

如何在Python中從列表b中減去列表a?

[英]How do you subtract list a from list b in Python?

所以我有2個列表,說列表a和列表b ,其中

a = [9, 8, 7, 6]
b = [1, 2, 3, 4]

我將如何從a減去b的內容?

您可以壓縮兩個列表並減去子元素以創建新列表:

zip(b,a) -> [(1, 9), (2, 8), (3, 7), (4, 6)]

a = [9, 8, 7, 6]
b = [1, 2, 3, 4]

print([y-x for x,y in zip(b,a)])
[8, 6, 4, 2]

如果你想改變a單獨使用羅列的常用指標減去元素:

for ind,ele in enumerate(a):
    a[ind] -= b[ind]
print(a)
[8, 6, 4, 2]

或使用numpy:

將numpy導入為np

a = np.array([9, 8, 7, 6])
b = np.array([1, 2, 3, 4])

print(a - b)
[8 6 4 2]

您可以使用map函數及其功能來支持多個迭代(以下假設為Python2):

>>> a = [9, 8, 7, 6]
>>> b = [1, 2, 3, 4]
>>> map(lambda x,y: x-y, a, b)
[8, 6, 4, 2]

map將第一個參數(必須是一個函數)應用於以下參數的所有元素。 例如:

>>> from math import sqrt
>>> map(sqrt, [1,2,9])
[1.0, 1.4142135623730951, 3.0]

如果使用兩個以上的參數,則第一個參數中的函數必須采用更多的參數,因為每個列表中的元素都會調用該函數:

>>> from math import pow
>>> map(pow, [2,3,4], [2,3,4])
[4.0, 27.0, 256.0]

結果是2 ^ 2、3 ^ 3和4 ^ 4。

在我的示例中, lambda只是定義減法函數的一種較短方法,以下代碼將執行相同的操作:

def sub(x,y):
  return x-y

map(sub, a, b)
a=[1,2,3,4,5]
b=[9,8,7,6,4]

t=0
h=[]

lenA=len(a)

while lenA != t:
    x=a[t]-b[t]
    t=t+1
    h.append(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM