次のような配列numsがあったときに、配列の要素数が0かそれ以外かを判定する方法で、
実装方法によってパフォーマンスに後述のような差がありました。どういう理由でこのような差が生まれてくるのかを教えてほしいです。

もし可能であればそれらの判定方法の計算量も教えてもらいたいです。
おそらくO(1)であって、O(N)まではいかないにしてもわずかながら差があるのだろうなと思っています。

用意した配列nums

nums = [1,2,3,4]

方法1

純粋にlen()を使って判定した場合

# 9.7 ms ± 399 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%%timeit
n = 10**5
for i in range(n):
    if len(nums) > 0:
        pass

方法2

if numsとした場合。方法1の3倍くらい速い

# 3.75 ms ± 23.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%%timeit
n = 10**5
for i in range(n):
    if nums:
        pass

補足

Python3.7を使っています