Найдите индексы общих кортежей в двух списках кортежей без цикла в Python

Как найти индексы общих кортежей в двух списках кортежей?

tuplelist1 = [("a","b"), ("c","d"), ("e","f"), ("g","h")]
tuplelist2 = [("c","d"),("e","f")]

Таким образом, индексы в tuplelist1, которые являются общими с tupplelist2, — это индексы 1 и 2.

Есть ли способ понять это без цикла? Есть ли способ сделать это, например, с помощью наборов или понимания списка?

Спасибо!


person Emmanuel Sunil    schedule 14.09.2016    source источник
comment
Вы понимаете, что понимание списка — это цикл... верно?   -  person Paul Becotte    schedule 15.09.2016
comment
Сделайте tuplelist2 набор, если у вас есть много данных для проверки   -  person Padraic Cunningham    schedule 15.09.2016


Ответы (1)


С пониманием списка вы можете сделать

indices_of_shared = [index for (index, pair) in enumerate(tuplelist1) if pair in tuplelist2]
person Curtis Lusmore    schedule 14.09.2016
comment
Это просто перечисляет индекс списка 1, если он существует в списке 2? Возможно if pair == tupleList2[index]? - person Kenny; 15.09.2016
comment
Да, это просто проверяет наличие кортежа в другом списке, а не то, что он появляется по тому же индексу. Ваш код должен работать, если вы хотите, чтобы он отображался в том же индексе. - person Curtis Lusmore; 15.09.2016