自学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位小数
自然常数eee的近似值,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语句判断这个距离是否落在圆内。最终,根据总抛点落入圆内的数量,计算比值,从而得到π值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值