# [Tutor] Problem with if statements and else statements

Peter Otten __peter__ at web.de
Mon May 29 01:36:11 EDT 2017

```Alex Kleider wrote:

> On 2017-05-28 13:13, Mats Wichmann wrote:
>
>> FWIW, if checking for multiples, you could also write:
>>
>> if Month in ['January', '1']:
>
> Would
>
>>>> if Month in {'January', '1'}:
>
> be even better?  (regarding efficiency perhaps? Trivial point, I know,
> but just wondering.)

Yes, according to timeit there is already a significant difference:

\$ python3 -m timeit -s 'month = "September"' 'month == "January" or month ==
"1"'
10000000 loops, best of 3: 0.126 usec per loop
\$ python3 -m timeit -s 'month = "September"' 'month in ["January", "1"]'
10000000 loops, best of 3: 0.108 usec per loop
\$ python3 -m timeit -s 'month = "September"' 'month in {"January", "1"}'
10000000 loops, best of 3: 0.0684 usec per loop

As the size of the list/set grows you'll see the effects of O(N) versus
O(1):

\$ python3 -m timeit -s 'N = 10**6; numbers = list(range(N))' 'N in numbers'
10 loops, best of 3: 32.5 msec per loop
\$ python3 -m timeit -s 'N = 10**6; numbers = set(range(N))' 'N in numbers'
10000000 loops, best of 3: 0.0921 usec per loop

```