2014-02-14 4 views
2

По сравнению со списком сравнения я имею в виду, что у меня есть два списка, которые я отсортировал с помощью разных методов (bubblesort и insertion sort) в соответствии с двумя разными критериями. Теперь я хотел бы сравнить, если элемент в одном из списка находится в том же положении в другом списке, и если это так, верните его позицию. Так что для менясравнение индексов списка в python

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

Я знаю, что это не правильно, так как он сравнивает элементы List1 для list2 элементов и возвращает позицию, в которых они соответствуют (я думаю). Кроме того, такого рода следует, что List1 является подмножеством List2, что это не так, два списка такие же только что заказал по-разному

+1

Вы забыли использовать операторы сравнения: р – 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, который вернет кортеж с индексом и фактическим элементом из итерабельного. Мы сохраняем индекс, если элементы совпадают.

Edit: Для конкретного входа, указанному вами в разделе комментариев

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

Смежные вопросы