Python编程基础-6(数据结构一)

本文介绍了Python中的数据结构,重点讲解了序列(包括字符串、列表、元组和字典)及其通用操作,如索引、切片、连接和格式化。此外,还提到了正则表达式在处理复杂字符串的应用以及字符串的多种方法和转换技巧。
摘要由CSDN通过智能技术生成

博客主要用于自学记录,内容参考国科大张晋连老师的Python编程课的课件

第六章 数据结构

目录

第六章 数据结构

6.1 序列概述

6.2 序列通用操作

6.3 字符串概述

6.4 字符串格式化

6.5 字符串方法

6.6 正则表达式简介(*)


6.1 序列概述

        Python 提供了功能强大的内置数据结构,包括:

  • 字符串
  • 列表
  • 元组
  • 字典
  • 集合

6.2 序列通用操作

        其中字符串、列表和元组都属于序列

        序列有一些通用操作,包括:

  • 索引(Indexing)
  • 切片(slicing)
  • 链接(adding)
  • 重复(mulitiplying)
  • 检查某个元素是否属于序列的成员
  • 计算序列长度
  • 找出最大元素和最小元素等

        序列相关操作 :

  • 标准类型运算符
    • 值比较:>  <   >=  <=  ==  !=
    • 对象身份比较:is  is not
    • 布尔运算:not  and  or
  • 序列类型运算符
    • 序列中的所有元素都有编号。从0开始递增。这些元素可以通过编号分别访问。索引有正索引和负索引,可以根据实际情况选用。
      • 获取
      • 重复
      • 连接
      • 判断
  • 内置函数   
    • 序列类型转换内置函数
      • list()  new empty list
      • list(iterable)  new list initialized from iterable's items
      • tuple()  empty tuple
      • tuple(iterable) 
    • 序列类型其他常用内置函数 
      • enumerate() 同时获取序列索引及值
      • len() 
      • max()
      • min()
      • reversed() 逆向循环序列
      • sorted()
      • sum()
      • zip() 同时循环两个或者多个序列

6.3 字符串概述

  • 在Python中,字符串是除数字外最重要的数据类型。
  • 可充分利用索引和切片-用于从字符串中提取子串
  • 虽然Python字符串提供了众多实用的函数,但实际处理字符串时,常常需要更强大的工具。
  • Python提供了一个第三方库re,进行正则表达式处理,用于处理复杂字符串。

6.4 字符串格式化

        在使用print语句输出数据时,可以按照定制的格式进行输出,Python提供了一些字符串格式化方法:

  • 类似C语言的格式化方法,使用%
    • C语言使用函数Printf()格式化输出结果,Python也提供了类似功能
    • Python将若干值插入带有“%”标记的字符串中,从而可以按照指定格式输出字符串
    • 语法:
    •    "%s" % str1

         "%s %s" % (str1, str2)

      • 在字段宽度和精度之间还可以放置一个“标志”,该标志可以是加号(可显示数字的正负号)、减号(左对齐,默认右对齐)、零(表示数字空位将会用0填充)

  • format()方法
    • <模板字符串>.format(<逗号分隔的参数>)

      • 其中:<模板字符串>由一系列的槽组成,用来控制修改字符串中嵌入值的位置,其基本思想是将fromat()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中

      • 槽用大括号{}表示,如果大括号中没有序号,则按照出现的顺序替换,如果大括号中指定了使用参数的序号,按照序号对应参数替换

      • 槽中还可以使用关键字参数

      • 带有格式信息的槽:

        • format方法中<模板字符串>的槽除了包括参数序号,还可以包括:格式控制信息。此时,槽的内部格式为:{<参数序号>: <格式控制标记>},其中<格式控制标记>用来控制参数显示时的格式。

          • <格式控制标记>包括:<填充><对齐><宽度>,<.精度><类型>6个字段(需按照此顺序排列)

            • <填充><对齐><宽度>是3个相关字段

            • <宽度>指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。

            • <对齐>值参数在<宽度>内输出时的对齐方式,分别使用< > ^ 三个符号表示左对齐、右对齐和居中对齐。

            • <填充>指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以使用<填充>更换

            • <格式控制标记>中逗号(,)用于显示数字的千位分隔符

            • <精度>表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。

            • <类型>表示输出整数和浮点数类型的格式挥着

              • 对于整数类型,输出格式包括6种

                • b:输出整数的二进制格式

                • c:输出整数对应的Unicode字符

                • d:输出整数的十进制格式

                • o:输出整数的八进制格式

                • x:输出整数的小写十六进制格式

                • X:输出整数的大写十六进制格式

              • 对于浮点数类型,输出格式包括4种:
                • e:输出浮点数对应的小写字母e的指数形式
                • E:输出浮点数对应的大写字母E的指数形式
                • f:输出浮点数的标准浮点形式
                • %:输出浮点数的百分数形式
              • 浮点数输出时京俩个使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。
  • 其他方法 (字符串的转义字符)
    • 计算机中存在可见字符与不可见字符。可见字符是指键盘上的字母】数字和符号。不可见字符是指换行、回车、制表符等字符。
    • 对于不可见字符,Python使用的方法类似于C语言,都是使用”\“作为转义字符
    • Python还提供了函数Strip()、Istrip()、rstrip()去除转义字符串中的转义字符。

      符号

      描述

      符号

      描述

      \\

      反斜线

      \t

      横向制表符

      \’

      单引号

      \o

      后跟八进制数表示的2ascii字符

      \”

      双引号

      \x

      后跟十六进制数表示的2ascii字符

      \n

      换行符

      \000

      终止符,其后的字符串全部忽略

6.5 字符串方法

  • Python字符串自带了大量很有用的方法(字符串类内定义的函数),可调用dir并将参数指定为任何字符串(如:dir('')来查看他们)
  • 本章介绍常用的字符串方法
  • 字符串测试
    • 用于检测字符串是否为特定格式,他们组成了一个最大的字符串方法组
    • 测试方法的值都返回True或者False。

  • 字符串查找
    • 方法index和find 之间的差别在于没有找到指定子串的情形。方法index引发异常ValueError,而方法find将返回-1.
  • 字符串替换
    • 使用替换方法可方便的删除字符串中的子串

      方法名

      返回的字符串

      s.replace(old,new[,count])

      s中的每个old替换为new,若给出count

      则前count次的oldnew替换

      s.expandtabs(n)

      s中的每个制表符扩展为空格,空格宽度为n

  • 字符串拆分
    • 拆分方法将字符串拆分成多个子串。如下表所示。

      方法名

      返回的字符串

      s.partition(t)

      s拆分为三个字符串(headttail),

      其中headt前面的子串,tailt后面的子串。

      返回值为元组

      s.rpartition(t)

      partition相同,但从s的右端开始搜索t

      返回值为元组

      s.split(t=None, maxsplit=-1)

      t为分隔符,将s划分成一系列子串,

      并返回一个由这些子串组成的列表。

      默认分隔符为空白符(空格、换行、制表符);

      若给出maxsplit参数,则只有maxsplit个分隔符有效,

      默认值为-1,表示对分隔数无限制。

      s.rsplit(t)

      split相同,但从s的右端开始搜索t

      s.splitlines()

      返回一个由s中的各行组成的列表

  • 改变大小写
    • 对于所有字符串的方法,Python都创建并返回一个新的字符串,不会修改原字符串。

      方法名

      返回的字符串

      s.capitalize()

      s[0]改为大写,其余小写

      s.lower()

      s的所有字母都小写

      s.upper()

      s的所有字母都大写

      s.swapcase()

      将小写字母改为大写,并将大写字母改为小写

      s.title()

      s的大小写符合标题的要求

  • 设置字符串格式
    •  

      方法名

      返回的字符串

      s.center(n,ch)

      返回长度为n个字符的字符串,其中s位于中间,两边用字符ch填充

      s.ljust(n,ch)

      返回长度为n个字符的字符串,其中s位于左边,右边用字符ch填充

      s.rjust(n,ch)

      返回长度为n个字符的字符串,其中s位于右边,左边边用字符ch填充

      s.zfill(n)

      返回长度为n个字符的字符串,若字符串长度不足n,在左侧添加字符“0”,

      但若s的最左侧字符是“+”或“-”,则从第二个字符左侧添加0

      s.format(vars)

      设置字符串格式。详见本章格式化字符串内容

  • 字符串剥除
    • 剥除方法用于删除字符串开头或末尾指定的字符。如下表所示
    • 默认情况下,剥除空白字符(空白字符包括:空格本身、回车换行\n、制表符\t);如果制定了字符串参数,则剥除该字符串中的指定字符
    • 若希望删除字符串s中所有空格,可以使用s。replace(' ','')。

      方法名

      返回的字符串

      s.strip(ch)

      s开头和末尾删除指定字符ch

      s.lstrip(ch)

      s开头(左端)删除指定字符ch

      s.rstrip(ch)

      s末尾(右端)删除指定字符ch

  • 字符串比较
    • Python直接使用“==” “!=” 操作符比较两个字符串的内容。
    • 若要比较字符串的部分内容,可以先截取子串,再使用“==”“!=”操作符进行比较
    • 若是要比较字符串的开头和结尾部分,更方便的方式是 使用startswith()endswith()函数
  • 字符串的合并
    • 之前介绍过,Python可使用“+”连接不同的字符串
    • 除此之外,还可以使用Join方法(是split方法的逆方法)和reduce函数实现字符串的合并。
  • 字符串与日期的转换
    • 在实际应用中,经常需要将日期类型与字符串类型互相转换。
    • Python提供了time模块处理日期和时间。time模块的函数strftime()可以实现从时间到字符串的转换。
      • 声明:

           strftime(format[, tuple])->string

      • 说明:

        参数 format 表示格式化日期的特殊字符。例如:“ %Y-%m-%d ”相当于“ yyyy -mm- dd .
        参数 tuple 表示需要转换的时间,用元组存储。元组中的元素分别表示年、月、日、时、分、秒、 ……
        函数返回一个表示时间的字符串。
    • 字符串到时间的转换要进行两次转换,需要使用time模块的strptime()函数和datetime模块的datetime()函数。
    • 格式化日期的常用标记

6.6 正则表达式简介(*)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值