En cuanto a su primera pregunta: ese código está perfectamente bien y debería funcionar si itemes igual a uno de los elementos dentro myList. Tal vez intente encontrar una cadena que no coincida exactamente con uno de los elementos o tal vez esté utilizando un valor flotante que sufre de inexactitud.
En cuanto a su segunda pregunta: en realidad hay varias formas posibles de "encontrar" cosas en las listas.
Comprobando si hay algo adentro
Este es el caso de uso que describe: Verificar si algo está dentro de una lista o no. Como sabes, puedes usar el inoperador para eso:
3 in [1, 2, 3] # => True
Filtrando una colección
Es decir, encontrar todos los elementos en una secuencia que cumplan una determinada condición. Puede usar la comprensión de listas o expresiones generadoras para eso:
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
Este último devolverá un generador que puede imaginar como una especie de lista perezosa que solo se creará tan pronto como lo repita. Por cierto, el primero es exactamente equivalente a
matches = filter(fulfills_some_condition, lst)
en Python 2. Aquí puede ver las funciones de orden superior en funcionamiento. En Python 3, filterno devuelve una lista, sino un objeto tipo generador.
Encontrar la primera ocurrencia
Si solo quiere lo primero que coincide con una condición (pero aún no sabe qué es), está bien usar un bucle for (posiblemente también usando la elsecláusula, que no es muy conocida). También puedes usar
next(x for x in lst if ...)
que devolverá el primer partido o aumentará a StopIterationsi no se encuentra ninguno. Alternativamente, puedes usar
next((x for x in lst if ...), [default value])
Encontrar la ubicación de un artículo
Para las listas, también existe el indexmétodo que a veces puede ser útil si desea saber dónde está un determinado elemento en la lista:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
Sin embargo, tenga en cuenta que si tiene duplicados, .indexsiempre devuelve el índice más bajo: ......
[1,2,3,2].index(2) # => 1
Si hay duplicados y desea todos los índices, puede usar enumerate()en su lugar:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList.