python 判斷in操作的時間複雜度

2021-10-25 15:10:09 字數 1674 閱讀 6219

python **常用in來判斷乙個元素是否在list中,這個判斷的時間複雜度是多少呢?

in list : o(n)

inset

: o(1)

in dict : o(1)

具體的時間差多少呢,跑了下資料,具體如下

list1 =

list

(range

(100000))

%timeit 1

in list1

51.3 ns ± 4.23 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

%timeit 100

in list1

1.33 µs ± 106 ns per loop (mean ± std. dev. of 7 runs,

1000000 loops each)

%timeit 10000

in list1

130 µs ± 10.9 µs per loop (mean ± std. dev. of 7 runs,

10000 loops each)

%timeit 100000

in list1

1.48 ms ± 117 µs per loop (mean ± std. dev. of 7 runs,

1000 loops each)

%timeit 10000000

in list1

1.44 ms ± 175 µs per loop (mean ± std. dev. of 7 runs,

1000 loops each)

# 尋找的元素在list中位置前後會影響取出資料的時間,最後兩次都是1.48ms了,

# 並且位置對查詢時間的影響基本是線性的

set1 =

set(

range

(100000))

%timeit 1

in set1

47.7 ns ± 5.93 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

%timeit 100

in set1

43.3 ns ± 1.35 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

%timeit 10000

in set1

59.6 ns ± 1.38 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

%timeit 100000

in set1

44.4 ns ± 1.38 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

%timeit 10000000

in set1

60.4 ns ± 2.82 ns per loop (mean ± std. dev. of 7 runs,

10000000 loops each)

# set 就很平均,dict跟set是一樣的就不多贅述。

python時間操作

1 計算時間差 q 如何方便的計算兩個時間的差,如兩個時間相差幾天,幾小時等 a 使用datetime模組可以很方便的解決這個問題,舉例如下 import datetime d1 datetime datetime 2009,3 23 d2 datetime datetime 2009,10 7 d...

python時間操作

不管何時何地,只要我們程式設計時遇到了跟時間有關的問題,都要想到 datetime 和 time 標準庫模組,今天我們就用它內部的方法,詳解python操作日期和時間的方法。1.將字串的時間轉換為時間戳 複製 如下 方法 a 2013 10 10 23 40 00 將其轉換為時間陣列 import ...

python 時間操作

把2018年6月30日轉化為元組和時間戳 time str 2018 06 30 09 59 26 print time.strptime time str,y m d h m s tup time time.strptime time str,y m d h m s print time.mkti...