自学python[4]

近几日学习了元组、列表以及math库与random库相关基础知识。

元组tuple是包含多个元素的类型,元素之间用逗号分割。
例如:
t1 = 123,456, “hello”
元组可以是空的:
t2=()
元组包含一个元素时:
t3=123
元组外侧可以使用括号,也可以不使用
元组中元素可以是不同类型;
一个元组也可以作为另一个元组的元素,此时,作为元素的元组需要增加括号,从而避免歧义。
例如:
>>> t3=123,456,("hello","中国")

元组中各元素存在先后关系,可以通过索引访问元组中元素。
例如:
>>>t3[0]
元组定义后不能更改,也不能删除。
例如:
>>>t3[0]=456
与字符串类型类似,可以通过索引区间来访问元组中部分元素。
例如:
t[1:]
与字符串一样,元组之间可以使用+号和*号进行运算。
tuple(元组)类型定义后不能修改
不可变的意义:不可变所以更加安全,若不考虑该情况,可使用列表类型。(如下)
基本概念
列表list是有序的元素集合;
列表元素可以通过索引访问单个元素;

>>> a=[0,1,2,3,4,5,6,7,8,9]
>>>print(a)
[0,1,2,3,4,5,6,7,8,9]
>>>
  1. 列表与元组类似
  2. 列表中每个元素类型可以不一样
  3. 访问列表中元素时采用索引形式
  4. 列表与元组不同
  5. 列表大小没有限制,可以随时修改
列表操作符 操作符含义
< list1 > + < list2> 连接两个列表
< list > * < 整数类型 > 对列表进行整数次重复
< list > [< 整数类型 >] 索引列表中的元素
len( < seq > ) 列表中元素个数
< list >[ < 整数类型 > : < 整数类型 >] 取列表的一个子序列
for < var > in < list > : 对列表进行循环列举
< expr > in < list > 成员检查,判断< expr >是否在列表中

列表操作

>>> vlist=[0,1,2,3,4]
>>> vlist*2
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
>>> len(vlist[2:])
3
>>> for i in vlist [:3]:
		print(i)

0
1
2
>>> 2 in vlist
True

列表相关操作

方法 方法含义
< list > . append ( x ) 将元素x增加到列表的最后
< list > . sort ( ) 将列表元素排序
< list > . reverse ( ) 将序列元素反转
< list > . index ( ) 返回第一次出现元素x的索引值
< list > . insert ( i, x ) 在位置i处插入新元素x
< list > . count ( x ) 返回元素x在列表中的数量
< list > . remove ( x ) 删除列表中第一次出现的元素x
< list > . pop ( i ) 取出列表中位置i的元素,并删除它

与上相关的实例

>>> vlist=[0,1,2,3,4]
>>> vlist.append('python')
>>> vlist
[0, 1, 2, 3, 4, 'python']
>>> vlist.reverse()
>>> vlist
['python', 4, 3, 2, 1, 0]
>>> vlist.index(3)
2
>>> vlist.pop(2)
3
>>>vlist
['python', 4, 2, 1, 0]
>>>

对于字符串,可以通过split()函数,将字符串拆分成一个列表,默认以空格分割

下面是所学的math库相关内容

math库中常用的数学函数

函数 数学表示 含义
圆周率pi π π的近似值,15位小数
自然常数e e e的近似值,15位小数
ceil(x) ڿxۀ 对浮点数向上取整
floor(x) ہxۂ 对浮点数向下取整
pow(x,y) x^y 计算x的y次方
log(x) lg x 以e为基的对数
log10(x) ln10x 以10为基的对数
sqrt(x) x^1/2 平方根

常用数学函数

函数 数学表示 含义
exp(x) e的x次幂,
degrees(x) 将弧度值转换成角度
radians(x) 将角度值转换成弧度
sin(x) sin x 正弦函数
cos(x) cos x 余弦函数
tan(x) tan x 正切函数
asin(x) arcsin x 反正弦函数,x∊[-1.0,1.0]
acos(x) arccos x 反余弦函数,x∊[-1.0,1.0]
atan(x) arctan x 反正切函数,x∊[-1.0,1.0]

random库常用函数

函数 含义
seed(x) 给随机数一个种子值,默认随机种子是系统时钟
random() 生成一个[0, 1.0)之间的随机小数
uniform(a,b) 生成一个a到b之间的随机小数
randint(a,b) 生成一个a到b之间的随机整数
randrange(a,b,c) 随机生成一个从a开始到b以c递增的数
choice() 从列表中随机返回一个元素
shuffle() 将列表中元素随机打乱
sample(,k) 从指定列表随机获取k个元素

random库及其使用

>>> from random import *
>>> random()
0.7129609089373519
>>> uniform(1,10)
4.645197683144932
>>> randiant(1,10)
5
>>> randrange(0,10,2)
0

随机数库及其使用

>>> ra=[0,1,2,3,4,5,6,7,8,9]
>>> choice(ra)
5
>>> shuffle(ra)
>>> ra
[5, 7, 6, 2, 0, 8, 4, 9, 3, 1]
>>> sample(ra,4)
[6, 2, 3, 7]
>>>

调用seed()函数,重置随机种子

>>> seed(10)
>>> uniform(1,10)
6.142623352209221
>>> uniform(1,10)
4.860001492087032

上述的seed(10)再次设定后,每次调用随机函数后生成的随机数都是相同的。这就是随机种子的作用(并非真正意义上的随机,是伪随机)
因为计算机是一个确定设备,不能生成真正的随机数。所以,由计算机产生的随机数都是由一个种子开始的伪随机序列。相同的随机种子产生相同的伪随机数序列,也有利于程序的验证执行。

π的计算
圆周率π是一个无理数,没有任何一个精确公
式能够计算π值, π的计算只能采用近似算法。
国际公认的PI值计算采用蒙特卡洛方法。

蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。当所求解问题是某种事件出现的概率,或某随机变量期望值时,可以通过某种“试验”的方法求解。简单说,蒙特卡洛是利用随机试验求解问题的方法。
π的计算中蒙特卡洛方法在python中的使用:

    from random import random
    from math import sqrt
    from time import clock
    DARTS = 1200
    hits = 0
    clock()
    for i in range(1,DARTS):
        x, y = random(), random()
        dist = sqrt(x**2 + y**2)
        if dist <= 1.0:
            hits = hits + 1
    pi = 4 * (hits/DARTS)
    print("Pi的值是 %s" % pi)
    print("程序运行时间是 %-5.5ss" % clock())

输入部分通过初始变量DARTS给出;
输出部分通过print函数打印到屏幕上
操作部分主要代码如下:

for i in range(1,DARTS) :
	x, y = random(), random()
	dist = sqrt(x**2 + y**2)
	if dist <= 1.0:
		hits = hits +1
pi = 4 * (hits/DARTS)

代码主体是一个循环,模拟抛洒多个点的过程。对于一个抛点,通过random()函数给出随机的坐标值(x,y),然后利用开方函数sqrt()计算抛点到原点距离,然后通过if语句判断这个距离是否落在圆内。最终,根据总抛点落入圆内的数量,计算比值,从而得到π值

你可能感兴趣的:(python)