程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
# a ** b <=> power(a, b)
print(10 ** 2)
print(10 ** 2.5)
# //: 返回商的整数部分
print(23 // 5)
print(28.7 // 4.4)
# 移位
print(16 << 2)
print(30 << 3)
print(70 >> 1)
print(100 >> 3)
# 与/或/异或
print(0b1101 & 0b1011) # 0b1001 = 9
print(0b1101 | 0b1011) # 0b1111 = 15
print(0b1101 ^ 0b1011) # 0b0110 = 6
结果 :
100
316.22776601683796
4
6.0
64
240
35
12
9
15
6复习一下python的运算符,**代表幂次方,和power方法作用一致,//只返回整数部分
import timeit
sum_by_for = """
for d in data:
s += d
"""
sum_by_sum = """
sum(data)
"""
sum_by_numpy_sum = """
import numpy
numpy.sum(data)
"""
def timeit_using_list(n, loops):
list_setup = """
data =[1] * {}
s = 0
""".format(n)
print('list result:')
print(timeit.repeat(sum_by_for, list_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_sum, list_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_numpy_sum, list_setup, number = loops,repeat=3))
def timeit_using_array(n, loops):
array_setup = """
import array
data = array.array('L', [1] * {})
s = 0
""".format(n)
print('array result:')
print(timeit.repeat(sum_by_for, array_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_sum, array_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_numpy_sum, array_setup, number = loops,repeat=3))
def timeit_using_numpy(n, loops):
numpy_setup = """
import numpy
data = numpy.array([1] * {})
s = 0
""".format(n)
print('numpy result:')
print(timeit.repeat(sum_by_for, numpy_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_sum, numpy_setup, number = loops,repeat=3))
print(timeit.repeat(sum_by_numpy_sum, numpy_setup, number = loops,repeat=3))
if __name__ == '__main__':
timeit_using_list(30000, 500)
timeit_using_array(30000, 500)
timeit_using_numpy(30000, 500)
结果 :
list result:
[0.5652346103508467, 0.5781732377343745, 0.5701320874139877]
[0.10729448986781853, 0.14553029110043503, 0.10763628372931167]
[0.8066620190081668, 0.7521792472177009, 0.752524638909315]
array result:
[0.6009956579725557, 0.5986102966023479, 0.600549250281392]
[0.14612448658272292, 0.14601904248456155, 0.14489734975530588]
[0.011272555281351515, 0.011154380399686303, 0.010652344719727758]
numpy result:
[1.4779578937638256, 1.4245613899137322, 1.4292067421122407]
[1.226380176066737, 1.2703141099424933, 1.2170294155823136]
[0.008733317484431069, 0.008684054887389436, 0.008633408509533425]我们写完一个算法的时候有时候会想知道这段程序到底运算有多快,我们可以使用timeit来测试一段程序运行所需时间
可以使用timeit.timeit运行测试,但我们的电脑无时无刻不在运算,有可能某个时刻正是运算堵塞的时候,这样测出来的结果就不准确了,可以使用timeit.repeat多次测量,然后把结果取最小值或平均值,这样会好一些
这段程序分别测试了用for循环,sun函数,numpy库运算三种方式产生的数组各自的时间消耗
# -*- coding: utf-8 -*-
# if判断
a = 100
b = 200
c = 300
if c == a:
print(a)
elif c == b:
print(b)
else:
print(c)
# None的判断
x = None
if x is None:
print ('x is None')
if not x:
print ('x is None')
# for循环
s = 0
for i in range(0, 101):
s += i
print(s)
# while循环
s = 0
i = 0
while i <= 100:
s += i
i += 1
print(s)
# continue/pass/break
for i in range(0, 100):
if i < 10:
pass
elif i < 30:
continue
elif i < 35:
print(i)
else:
break
结果 :
x is None
x is None
5050
5050
30
31
32
33
34简单的循环和判断