2011-11-13 3 views
3
listEx = ['cat *(select: "Brown")*', 'dog', 'turtle', 'apple'] 
listEx2 = ['hampter',' bird', 'monkey', 'banana', 'cat'] 

for j in listEx2: 
    for i in listEx: 
     if j in i: 
      print listEx.index(j) 

То, что я пытаюсь выполнить, - это поиск элементов в спискеEx2 в спискеExEx. Если элемент из спискаEx2 найден в listEx, я хотел бы знать, как напечатать значение индекса элемента, найденного из listEX2 в listEx. Благодаря!Python два списка с индексом

+1

Вы хотите, чтобы '' cat'' был найден, потому что он содержится внутри '' cat * (выберите: «Brown») * ''? –

+0

Что произойдет, если в 'listEx' содержится несколько элементов, содержащих строку« cat »? Вам нужен индекс всех из них? –

ответ

4

Просто используйте enumerate:

listEx = ['cat *(select: "Brown")*', 'dog', 'turtle', 'apple'] 
listEx2 = ['hampter',' bird', 'monkey', 'banana', 'cat'] 

for j in listEx2: 
    for pos, i in enumerate(listEx): 
     if j in i: 
      print j, "found in", i, "at position", pos, "of listEx" 

Это будет p rint

cat found in cat *(select: "Brown")* at position 0 of listEx 
+0

Почему я всегда так медленно? :(- Неважно, ваше решение хорошее и работает. – Paul

3

Ваша проблема в том, что вы написали j вместо i в последней строке:

for j in listEx2: 
    for i in listEx: 
     if j in i: 
      print listEx.index(i) 
#       ^here 

Однако, лучший подход заключается в использовании enumerate:

for item2 in listEx2: 
    for i, item in enumerate(listEx): 
     if item2 in item: 
      print i 
+0

Пожалуйста, не просто поймайте какое-либо исключение, а посмотрите только на 'ValueError'. - ** edit: ** Спасибо xD – poke

+0

Я отредактировал то, что я пытаюсь сделать лучше, посмотрите – phales15

+0

Я хочу найти индекс 'cat * (выберите: «Brown») *'. – phales15

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