07-03成員運算符

成員運算符

成員運算符的目的:用於判斷一個元素是否在容器中
成員運算符:返回的是bool

  • in
  • not in
In [68]: 3 in [1, 2 ,3 ,4 ]
Out[68]: True

In [69]: 10 in [1, 2, 3, 4]
Out[69]: False

In [71]: 10 not in [1, 2, 3, 4]
Out[71]: True

In [72]: 'love' in 'i love python'
Out[72]: True

成員運算符的複雜程度

集合的成員運算符和其他的線性結構的時間複雜度不同

成員運算:

  • 集合O(1)
  • 列表(其他線性結構)O(n)

總結:

  • 做成員運算的時候, 集合的效率遠高於列表
  • 做成員運算時, 運算的效率和列表的規模有關
  • 做成員運算時, 集合的效率和集合的規模無關。
In [74]: lst = list(range(10000))

In [75]: s = set(range(10000))

In [76]: %%timeit
    ...: -1 in lst
    ...: 
10000 loops, best of 3: 125 µs per loop

In [77]: %%timeit      # 更快
    ...: -1 in s 
    ...: 
The slowest run took 39.70 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 45 ns per loop

做成員運算的時候, 集合的效率遠高於列表

In [78]: lst2 = list(range(100))

In [79]: %%timeit
    ...: -1 in lst2
    ...: 
1000000 loops, best of 3: 1.29 µs per loop

做成員運算時, 運算的效率和列表的規模有關

In [80]: s2 = set(range(100))

In [81]: %%timeit
    ...: -1 in s2
    ...: 
10000000 loops, best of 3: 39.1 ns per loop

做成員運算時, 集合的效率和集合的規模無關。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章