列表操作
列表相加 < append < 列表推到式1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import timeit
def way1(max1):
mylist = []
for i in range(max1):
mylist.append(i*i)
def way2(max1):
mylist = [i*i for i in range(max1)]
def way3(max1):
mylist = []
for i in range(max1):
mylist = mylist + [i*i]
if __name__ == '__main__':
t1 = timeit.Timer("way1(10000)","from __main__ import way1")
t2 = timeit.Timer("way2(10000)","from __main__ import way2")
t3 = timeit.Timer("way3(10000)","from __main__ import way3")
print(t1.timeit(number=1000)) # 3.6928262000000003
print(t2.timeit(number=1000)) # 3.6928262000000003
print(t3.timeit(number=1000)) # 118.5624449
搜索成员时
set比list快。 列表O(n), 集合O(1).1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28import timeit
def way1(max1):
mylist = [i*i for i in range(max1)]
n = 0
for i in range(10000):
if i in mylist:
n += 1
else:
n += i*2
return n
def way2(max1):
myset = {i*i for i in range(max1)}
n = 0
for i in range(10000):
if i in myset:
n += 1
else:
n += i*2
return n
if __name__ == '__main__':
t1 = timeit.Timer("way1(1000)","from __main__ import way1")
t2 = timeit.Timer("way2(1000)","from __main__ import way2")
print(t1.timeit(number=10)) # 1.479847
print(t2.timeit(number=10)) # 0.056411800000000234