Peut-être que cela est trop simple, mais if...elif
me semble bien à:
found = False
if 1 in a:
found = True
elif 2 in a:
found = True
Cela ne vérifie si 2
est dans la liste si 1
n'est pas, puisque vous ne cherche à voir si l'une est dans la liste (ne se souciant pas laquelle), cela devrait être bon
Plus:
- Son sim PLE
- Vous pouvez enregistrer un contrôle sur
2
si 1
est déjà dans la liste
- Pas besoin de convertir
a
à un autre type (qui l'efficacité des aides)
Contre:
- Cela ne vous obtiendra pas de points pour flair
Timing Comparaison:
basecase = """
a = [1,2,3,4]
if 1 in a or 2 in a:
print 'found'
"""
case1 = """
a = [1,2,3,4]
b = [1,2]
if set(b).issubset(set(a)):
print 'found'
"""
case2 = """
found = False
if 1 in a:
found = True
elif 2 in a:
found = True
"""
case3 = """
a = [1,2,3,4]
b = [1,2]
print any(x in a for x in b)
"""
En utilisant print min(timeit.Timer(<case>).repeat(8, 1000))
rendements
basecase = 0.0953138421204
case1 = 0.0974782045301
case2 = 0.0958207179797
case3 = 0.068283250742
Cela semble le moyen le plus élégant et le plus rapide – timebandit