2017-10-16 116 views
0

如何鏈接這兩個列表,所以當一個列表的變化(順序) 其他名單跟隨同一個號碼,連接兩個列表蟒蛇

List2=[5,4,3,2,1] 
List3=[2,4,6,8,10] 

改變列表2的順序和預期產出保持

List2=[1,2,3,4,5] 
List3=[10,8,6,4,2] 

但需要改回1-5

的列表2順序會改變,每次卻總是(Python的3.6)

+0

這兩個列表是相互獨立的嗎?更改一個列表應該對另一個列表沒有影響。你如何改變'list2'的順序? – davedwards

+0

嗨,他們是輸入的,我知道我想以某種方式鏈接它們,如果可能的話? – GraphicsLab

+0

哦,我的錯誤,我誤解了這個問題,謝謝你進一步解釋。但也許已經提供的答案有幫助 – davedwards

回答

1

定義一個小幫助函數,根據其中的一個排序這兩個列表。

def revert(a, b): 
    a, b = map(list, zip(*sorted(zip(a, b), key=lambda x: x[0]))) 
    return a, b 

現在,在需要時調用此函數。

List2, List3 = revert(List2, List3) 
+0

嗨,我只是測試這個謝謝你的快速答案給我幾個米! – GraphicsLab

+0

omg COLDSPEED你一個傳奇,非常感謝你如果開始不工作,似乎工作不好評論謝謝! – GraphicsLab

+0

喜應該是速戰速決,但得到:JudgeList1,ScoreList1 =恢復(JudgeList1,ScoreList1) UnboundLocalError:局部變量「JudgeList1」分配 – GraphicsLab

0
List2=[5,4,3,2,1] 
List3=[2,4,6,8,10] 

的 「容易」 的方式將是使dict3的字典和使用後,你翻拍清單2.事情是這樣的:

# Pair the lists 
List3 = dict(zip(List2,List3)) 

# Remake List2 
List2 = sorted(List2) 

# Remake List3 based on List2 
List3 = [List3[key] for key in List2] 

List3 

返回:

[10, 8, 6, 4, 2] 
+0

我不認爲這是什麼即時尋找對不起 – GraphicsLab

+0

@GraphicsLab可能是這樣,但字典這些任務就變得瑣碎。 –