2017-04-03 38 views
0

我有2名兩個列表,如: 1:做減法,從兩個列表

[[113, 3528.27], [114, 4376.139999999999], [116, 4328.85], [124, 390.27], [127, 814.12]] 

2:

[[113, 1237], [114, 4422], [116, 1245], [124, 324], [127, 242]] 

我想在每個子列表中的第一個元素匹配,併爲做減法子列表中的第二個元素。我用簡單的循環如下:

for i in 1: 
    for j in 2: 
    if i == j: 
     i[1] - j[1] 

有沒有一種快速的方法來做到這一點?

非常感謝!

+0

你能提供一個正確/可重複的例子嗎? (變量名不能以數字開頭,例如加上循環無效) – FLab

+0

假設你的意思是你想通過i [0] == j [0]和項目i [1] - j [1]加入, ,將列表轉換爲字典並通過鍵加入可能更有效。 – ImDarrenG

+0

@ImDarrenG謝謝你的回答。我更喜歡使用列表操作來查看任何有效的方法。 –

回答

1

難道這就是你要找的人:

a = [[113, 3528.27], [114, 4376.139999999999], [116, 4328.85], [124, 390.27], [127, 814.12]] 
b = [[113, 1237], [114, 4422], [116, 1245], [124, 324], [127, 242]] 
c = [[x[0], x[1] - y[1]] for x, y in zip(a, b)] 
+0

感激不盡!謝謝 –

+0

嘿@zipa,謝謝你的回答。你的答案很棒,但我需要在相同子列表中關聯的第一個元素:as [[113,2291.27],[114,-45.8600],...] –

+0

請參閱編輯。 – zipa

0

你的問題是有點難以解釋。也許一些預期的產量會造成差異。然而,這是我解釋它的意思。

def sub_two_lists(list1, list2): 
    sublist = [] 
    mainlist = [] 
    for i in list1: 
     for j in list2: 
      if i[0] == j[0]: 
       sublist.append(i[0]) 
       susblist.append(i[1] - j[1]) 
     mainlist.append(sublist) 
     sublist = [] 
    return mainlist 

list1 = [[113, 3528.27], [114, 4376.139999999999], [116, 4328.85], [124, 390.27], [127, 814.12]] 
list2 = [[113, 1237], [114, 4422], [116, 1245], [124, 324], [127, 242]] 
print(sub_two_lists(list1, list2)) 

預期輸出:[[113,2291.27],[114,-45.86000000000058],[116, 3083.8500000000004],[124,66.26999999999998],[127,572.12]]