2014-02-14 102 views
2

按列表索引比較我的意思是我有兩個列表,我根據2個不同的標準使用不同的方法(bubblesort和插入排序)對它們進行排序。現在我想比較一個列表中的元素是否在另一個列表中的相同位置,如果是,則返回它的位置。 所以對我有Python中的列表索引比較

List1 = selectionsort() 
List2 = bubblesort() 
indices = [List1.index(i) for i in List2] 
print (str(indices)) 

我知道,因爲它比較列表1到列表2元素的元素,並返回其匹配(我認爲)的位置,這是不對的。而且這種暗示列表1是列表2,它是不是,兩個列表的一個子集相同的只是排序不同

+1

你忘了使用比較運營商特定的輸入:P – thefourtheye

回答

2

您可以使用列表解析來獲取匹配指數這樣

list1, list2 = [1, 2, 3], [1, 4, 3] 
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2] 

輸出

[0, 2] 

我們首先荏苒兩個名單與zip。所以,在每次迭代中,我們都會從兩個列表中的相應位置獲取元素。然後我們用enumerate運行它,它將返回一個包含索引和來自迭代的實際元素的元組。如果元素匹配,我們保留索引。

編輯:對於在評論部分由你給

list1, list2 = ["a", "b", "c", "d", "e"], ["e", "d", "c", "b", "a"] 
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2] 

輸出

[2] 
+0

嘿,這似乎是非常有幫助的,但我不認爲這是我在找什麼。也許我應該讓自己更清楚: 例如 'list1 = [a,b,c,d,e] list2 = [e,d,c,b,a]' 因此c在兩個列表,我如何檢索其索引(2)以及如何爲多個值執行此操作 或者您給我的函數會以這種方式工作嗎? – sbhb91

+0

@ sbhb91請編輯問題並清楚解釋問題,並提供樣本輸入和預期輸出。 – thefourtheye

+0

@ sbhb91請嘗試我在答案中給出的程序。它會處理你的輸入。檢查後請確認。 – thefourtheye