Python闯关 (DAY TWO)

Python闯关 (DAY TWO)

一   random模块

介绍几个常用random函数。

  1. random.randint(a,b):返回一个在区间[a,b]内的一个随机整数,相当于randrange(a,b+1)。
  2. random.choice(seq):从seq序列中返回一个随机元素。
  3. random.shuffle(list):就地打乱列表元素。(就地修改)
  4. randrange([start,]stop[,step]):从指定计数递增的集合中获取一个随机数,计数缺省值为1。例:random.randrange(1,7,2)从1到7选取步长为2的随机数,即1,3,5中的一个随机数。
  5. random.sample(population,k): 从样本空间中随机取出k个不同的元素,返回一个新的列表。(population:样本空间,即一个实验或随机试验所有可能结果的集合)

二   元组tuple

元组是一个有序元素组成的集合,与list不同,是不可变对象,即元组一旦定义,则不许修改。
在这里插入图片描述

1. 定义方法:

  • tuple()
  • tuple(iterable)
  • tuple(n,):建立单个元素的元组,需要在元素后加上“,”用来说明是元组。
  • 元组中同样适用乘法。
    在这里插入图片描述

2. 元组元素的访问方式:

  • 支持索引访问,支持正负索引,整索引从0开始,0代表第一个元素,负索引从-1开始,-1代表最后一个元素。

正负索引都不可以超界,否则报IndexError

在这里插入图片描述

3. 元组查询:

  • index(value,[start,[stop]]): 从指定区间查找元素,匹配到第一个就立即返回索引,匹配不到,抛出ValueError。
  • count(value):返回列表中匹配Value的次数。
    index,count两个函数都是从列表的左侧一个一个向右找,所以时间复杂度为O(n),所以随着列表数据规模的增大,效率反而下降。
  • len(tuple): 返回元素的个数。

因为元组是只读的所以增,删,改,查的方法都没有。

三   namedtuple

namedtuple的是用需要引入collections(Container datatypes:容器数据类型,提供实现特定目标的容器)库。

  1. 用法:collections.namedtuple(typename,field_names)
  • 定义方法:
     Point = namedtuple(‘Point’,[‘x’,‘y’])
    namedtuple  用于快速构建一个只有少量属性,且没有方法的类。
    typename:定义的类的类型名。
    field_name:属性名,可以是空白字符或逗号分隔的字段的字符串,可以是字段的列表,可以放入可迭代对象,将迭代对象的每个元素作为属性。
    我们声明一个变量名,将namedtuple实例化的对象赋值给这个变量名,这个变量一般与
    typename
    相同,这样我们在使用的时候不会记错类型名。
    在这里插入图片描述
    虽然 namedtuple 中有
    tuple
    但是调用方法跟tuple可不一样,我们要像访问属性一样访问 namedtupletuple 访问数据时需要使用索引,如果我们需要取得特定的数据时需要记住数据的索引或者挨个元素寻找想要的数据(消耗内存,时间复杂度为O(n),虽然记住索引不会消耗内存,但记住每个索引太费劲。),但 namedtuple 为我们提供了一种更为方便的方式来记住索引,相比来说 tuplenamedtuple 更像是表格的两种形式,如下所示,这样方便记忆,另外如同 tuple 一样 namedtuple 的属性值也不可变。

tuple

0123
0
1
2

namedtuple

type_namenameclassgendergrade
filed_name01
filed_name02
filed_name03

三  字符串string

一个个字符组成的有序的序列,是字符的集合,是 不可变 对象,python3.x中字符串都是Unicode类型。

1.定义方法:

  使用单引号,双引号,三引号引注的字符序列。

2.使用方法:

  • 支持索引访问
    在这里插入图片描述
  • 可迭代
    在这里插入图片描述
  • 字符串join连接
    在这里插入图片描述
  • 字符串‘+’连接
    "+"连接,会生成新的string。
    在这里插入图片描述
  • 字符串大写 upper()
  • 字符串小写 lower()
  • 交换大小写 swapcase()

3.字符串分割:

字符串分割分为两类:split系,partition系

  • split系:
      将字符串按照分隔符分割成若干字符串,并立即返回 列表。(不反返回分隔符
  1. split(sep=None,maxsplit=-1)
    sep:分隔符,默认为空格。
    maxsplit = -1:最大分割次数,-1表示遍历整个字符串。 最后所得list共n+1段
    在这里插入图片描述
  2. rsplit(sep = None,maxsplit=-1) 返回列表
    从右向左开始切, 但是输出的字符串不会反,r:reverse
  3. splitlines([keepends]) 返回列表
    按照行来分割,keepends 指的是是否保留分隔符,分隔符包括\n,\r\n,\r等
    在这里插入图片描述
  • partition系:
      将字符串按照分隔符分割成两端,返回这两段和分隔符的 元组
  1. partition(sep) 返回元组,(head,sep,tail)
    从左至右,遇到分隔符就把字符串分割成两部分,返回头,分隔符,尾三部分的三元组,只匹配一次,如果没找到分隔符就返回头,两个空元素的三元组。 sep 必须指定,否则报错。
    在这里插入图片描述

  2. rpartition(sep)
    从右至左,遇到分隔符就把字符串分割成两部分,返回头,分隔符,尾三部分。

splitpartition
返回形式listtuple
返回元素个数n+1只返回head sep tail 三部分

4.字符串排版

  • title(): 每个单词首字母大写

  • capitalize():仅首个单词首字母大写

  • center(width[,fillchar]): width 打印宽度 fillchar 填充的字符

  • zfill(width):width 打印宽度,居右,左边用0填充

  • ljust(width[,fillchar]):左对齐

  • rjust(width[,fillchar]):右对齐

    对齐格式必须规定宽度,否则没有意义,所以第一个都为 width

5.字符串修改

  • replace(old,new[,count]):在字符串中找到匹配替换为新字串,返回新字串,count表示替换几次,不指定就是全部替换。
  • strip([char]): 从字符串两端去除指定的字符集chars中的所有字符,char默认空白字符。
    在这里插入图片描述
  • lstrip([chars]):从左侧开始
  • rstrip([chars]):从右侧开始

6.字符串查找

  • find(sub[,start[,end]]): 在指定区间 ***[start,end)&ennsp;(注意,这个区间设置跟range()一样,左闭右开)***找到返回正索引,没找到返回-1
  • rfind(sub[,start[,end]]):从右至左

6.字符串判断

  • endwith(suffix[,start[,end]]):在指定区间(start,end],字符串是否是suffix结尾,返回bool
  • startwith(prefix[,start[,end]]):是否以prefix开头

7.字符串判断 is 系列

  • isalnum():是否 ***只由***字母和数字组成
  • isalpha():是否 ***只由***字母组成
  • isdecimal():是否 ***只***包含十进制数字
  • isdigit():是否全部是数字,有小数点也不行
  • isidentifier():判断字符串是否是有效的标识符(字母数字下划线组成,字母,下划线开头)
  • islower():是否都是小写
  • isupper();是否全部大写
  • isspace():是否只包含空白字符

8.字符串格式化   str.format()

 join拼接只能使用分隔符,且要求被拼接的是可迭代对象且其元素是字符串,”+“拼接只能拼接字符串,非字符串要先转化为字符串才可拼接,而字符串的格式化是一种拼接字符串输出央视的收端,更加灵活方便。

  • “{0}aaaaa{1}bbbb{2}ccc{3}{4}{5}·····{n}”.format(0,1,2,3,4,5,····n)
    左面"“中括起来的是我们想要格式化的字符串,{}中的内容是格式化语句,未被{}括起来的内容会被当成字符串原样输出。每个{}自带索引(其中的数字就是索引,这个索引是可以省略的)当执行format时,索引会一一对应format后的每个位置,不同的位置之间用”,"隔开,即{0}–>format(0,·····)   {1}–>format(0,1,···) 我们在format中编辑格式化语句。
    ![format01][format01]

  • format格式化支持选项

  1. !r   !s :用repr() str()函数处理字符串,repr()会将传入的任何值都按照字符串输出 “str{!r}{!s}”.format(asdf,efr)
    在这里插入图片描述

  2. :[ fill ] align : 设定对齐方式,fill为可选参数,对齐时用fill中的内容进行填充,align有三种的格式。对于align,我们需要对其指定宽度,如果不指定宽度,则字段宽度会始终与填充了它的数据大小相同,在这种情况下,对齐选项没有意义。format还有比较有趣的一点,就是支持嵌套,如图。
    在这里插入图片描述
    其中的”2“为索引

<^>
左对齐居中右对齐

在这里插入图片描述
在这里插入图片描述

  1. 对象属性访问
    可以通过对象属性来访问。
    在这里插入图片描述

  2. 浮点数表示
    “{:f}”.format(30.5)   #1.732051 默认精度为6
    “{:10f}”.format(3
    0.5)  右对齐,宽度为10
    “{:2}”.format(30.5)  宽度为2个数字
    “{:.2}”.format(3
    0.5)  两个数字
    “{:.2f}”.format(30.5)  小数点后两位
    “{:3.2f}”.format(3
    0.5)  宽度为3,小数点后2位
    “{:3.3%}”.format(3*0.5)  宽度为3,小数点后3位( 宽度可以被撑爆

  3. 进制

![format07][format07]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值