Python入门程序【五】

程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。

# 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

简单的循环和判断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽蓝丶流月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值