Entonces tengo una lista con valores numéricos como my_num = [1,2,2,3,4,5]

Lo que quiero es un código que verifique si 1, 2 y 3 están en la lista. Lo que tenía en mente era:

Si 1 y 2 y 3 en my_num:

Hacer algo

Pero el problema es que si 1 y 3 están en la lista, el código de hacer algo se ejecuta de todos modos incluso sin que el 2 esté allí.

0
CYLegends 28 oct. 2017 a las 05:15

4 respuestas

La mejor respuesta

Prueba esto:

nums = [1,2,3,4]
>>> if (1 in nums) and (2 in nums) and (3 in nums):
...   print('ok')
...
ok
>>> if (1 in nums) and (2 in nums) and (9 in nums):
...   print('ok')
...
>>>
1
duhaime 28 oct. 2017 a las 02:17

Consulte las funciones de biblioteca estándar any y all. Puedes escribir esto:

if any(a in my_num for a in (1, 2, 3)):
    # do something if one of the numbers is in the list
if all(a in my_num for a in (1, 2, 3)):
    # do something if all of them are in the list
1
Paul Cornelius 28 oct. 2017 a las 02:26
if 1 and 2 and 3 in my_num: 

No está haciendo lo que cree que hace: prueba if 1, que es True, y if 2, que también es True, luego if 3 in my_num

Debe probar cada condición individualmente:

if 1 and in my_num and 2 in my_num and 3 in my_num:
0
Reblochon Masque 28 oct. 2017 a las 02:18

Si las longitudes de las listas son largas:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_in = [2, 3, 4]
if len(set(_in)) == len(set(nums)&set(_in)):
    print("ok")
0
Serg Anuke 28 oct. 2017 a las 02:23