python入门课程第五讲之序列和字符串

目录
  • 前言
  • 序列
    • 序列是什么?
  • 有哪些序列类型呢?
    • 1. 按照能存储的元素划分
    • 2. 按照是否可变划分
  • 序列都有哪些方法以及特性呢?
    • 序列的索引
    • 序列切片
    • 序列相加
    • 序列相乘
    • 检查元素是否包含在序列中
    • 序列相关的内置函数
  • 字符串
    • 字符串的定义
    • 原始字符串的处理
    • 字符串的分割方法
    • 字符串拼接的方法
  • 总结
  • 牛刀小试一下吧
    • 参考答案

本文主要介绍Python数据类型中序列和字符串,文末有彩蛋哦
干货满满,建议收藏,用到时常看常新。 小伙伴们如有问题及需要,请留言告诉我哦~ ~ ~。

前言

上一篇文章我们介绍了Python内置数据类型。这篇文章就开始介绍序列类型。本文首先会介绍序列的基本概念和通用的方法,接着会介绍Python中的字符串的概念和基本用法。

序列

序列是什么?

序列(sequence)指的是一块可存放多个元素的内存空间,这些元素按照一定的顺序排列。每个元素都有自己的位置(索引),可以通过这些位置(索引)来找到指定的元素。如果将序列想象成一个酒店,那么酒店里的每个房间就相当于序列中的每个元素,房间的编号就相当于元素的索引,可以通过编号(索引)找到指定的房间(元素)。

有哪些序列类型呢?

了解完了序列的基本概念,那么在Python中一共有哪些序列类型呢?如下图所示:

从图中可以看出在Python中共有7种序列类型,分别是文本序列类型(str);二进制序列类型 bytes和bytearray;列表(list);元组(tuple);集合类型(set和frozenset);范围类型(range)以及字典类型(dict)。

1. 按照能存储的元素划分

按照能存储的元素可以将序列类型划分为两大类:分别是:容器序列和扁平序列
容器序列:即可容纳不同数据类型的元素的序列;有 list;tuple;set;dict
举个栗子:

list=['runoob',786,2.23,'john',70.2]

这里的list保存的元素有多种数据类型,既有字符串,也有小数和整数。
扁平序列:即只能容纳相同数据类型的元素的序列;有bytes;str;bytearray,以str为例,同一个str只能都存储字符。

2. 按照是否可变划分

按照序列是否可变,又可分为可变序列和不可变序列。
这里的可变的意思是:序列创建成功之后,还能不能进行修改操作,比如插入,修改等等,如果可以的话则是可变的序列,如果不可以的话则是不可变序列。
可变序列有列表( list);字典(dict)等,
不可变的序列有元祖(tuple),后面的文章会详细的对这些数据类型做详细介绍。

序列都有哪些方法以及特性呢?

序列的索引

在介绍序列概念的时候,说到了序列中元素的索引,那么什么是序列的索引呢?其实就是位置的下标。 如果对C语言中的数组有所了解的话,我们知道数组的索引下标都是从0开始依次递增的正数,即第一个元素的索引下标是0,第n个元素的索引下标是n-1。序列的索引也是同理,默认情况下都是从左向右记录索引,索引值从0开始递增,即第一个元素的元素的索引值是0,第n个元素的索引值是n-1。如下图所示:

当然与C语言中数组不同的是,Python还支持索引值是负数,该类的索引是从右向左计数。换句话说,就是从最后一个元素开始计数,从索引值-1开始递减,即第n个元素的索引值是-1,第1个元素的索引值是-n,如下图所示:

序列切片

切片操作是访问序列元素的另一种方式,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。切片操作的语法格式是:

sname[start : end : step]

各个参数的含义分别是:

  1. sname: 表示序列的名称
  2. start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,不指定的情况下会默认为0,也就是从序列的开头开始切片。
  3. end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度。
  4. step: 表示步长,即在切片过程中,隔几个存储位置(包括当前位置)取一次元素,也就是说,如果step的值大于1,比如step为3时,则在切片取元素时,会隔2个位置去取下一个元素。

还是举个栗子说明下吧:

str1='好好学习,天天向上'
# 取出索引下标为7的值
print(str1[7])
# 从下标0开始取值,一直取到下标为7(不包括)的索引值
print(str1[0:7])
# 从下标1开始取值,一直取到下标为4(不包括)的索引值,因为step等于2,所以会隔1个元素取值
print(str1[1:4:2])
# 取出最后一个元素
print(str1[-1])
# 从下标-9开始取值,一直取到下标为-2(不包括)的索引值
print(str1[-9:-2])

运行的结果是:

向
好好学习,天天
好习
上
好好学习,天天

序列相加

Python支持类型相同的两个序列使用"+"运算符做想加操作,它会将两个序列进行连接,但是不会去除重复的元素,即只做一个简单的拼接。

str='他叫小明'
str1='他很聪明'
print(str+str1)

运行结果是:他叫小明他很聪明

序列相乘

Python支持使用数字n乘以一个序列,其会生成一个新的序列,新序列的内容是原序列被重复了n次的结果。

str2='你好呀'
print(str2*3)

运行结果是:你好呀你好呀你好呀 ,原序列的内容重复了3次。

检查元素是否包含在序列中

Python中可以使用in关键字检查某个元素是否为序列中的成员,其语法格式为:

value in sequence

其中,value表示要检查的元素,sequence表示指定的序列。
举个栗子:查找字是否在字符串str1中。

str1='好好学习,天天向上'
print('天' in str1)

运行结果是:True

序列相关的内置函数

函数 功能 适用场景
len() 计算序列的长度,即返回序列中包含了多少个元素 适用于列表,元组、字典、集合、字符串等
max() 找出序列中的最大元素,针对序列中元素是数字的情况 。 适用于列表,元组、字典、集合、range等
min() 找出序列中的最小元素,针对序列中元素是数字的情况 适用于列表,元组、字典、集合、range等
list() 将序列转换为列表 适用于字符串
str() 将序列转换为字符串 适用于列表,元组,数字
sum() 对序列中的元素求和,注意,对序列使用sum()函数时,做加和操作的必须全部是数字,不能是字符或者字符串,因为解释器无法判定事要做连接操作,还是做加和操作 适用于列表,元组、集合、range等
sorted() 对元素进行排序 适用于列表,元组、字典、集合、range,字符串等
reversed() 反向序列中的元素 适用于列表,元组、字典、集合、range,字符串等
enumerate() 枚举列表元素,返回枚举对象,其中每个元素包含下标和值的元组。该函数对元组/字符串同样有效。 适用于列表,元组、字典、集合、range,字符串等

依然是举例说明:

str3='码农飞哥'
print('字符串的长度=',len(str3))
print('转成列表=',list(str3))
print('调用enumerate函数',enumerate(str3))
print('遍历enumerate函数的结果:')
for item in enumerate(str3):
    print(item)

print('遍历reversed函数的结果:')
for item in reversed(str3):
    print(item)

list2=['码农','飞哥']
print('列表转字符串=',str(list2))
list1=[12,20,5,8,1]
print('最大值=',max(list1))
print('最小值=',min(list1))
print('求和结果=',sum(list1))
print('排序结果=',sorted(list1))

运行结果是:

字符串的长度= 4
转成列表= ['码', '农', '飞', '哥']
调用enumerate函数 <enumerate object at 0x7f90818cd540>
遍历enumerate函数的结果:
(0, '码')
(1, '农')
(2, '飞')
(3, '哥')
遍历reversed函数的结果:
哥
飞
农
码
列表转字符串= ['码农', '飞哥']
最大值= 20
最小值= 1
求和结果= 46
排序结果= [1, 5, 8, 12, 20]

字符串

前面介绍序列时,大部分例子都是用字符串来表示的,那么就来认识一下字符串吧!

字符串的定义

由若干个字符组成的集合就是一个字符串(str),Python中的字符串必须由双引号""或者单引号''包围。其语法格式是:

"字符串内容"
'字符串内容'

如果字符串中包含了单引号需要做特殊处理。比如现在有这样一个字符串
str4='I'm a greate coder' 直接这样写有问题的。
处理的方式有两种:

对引号进行转义,通过转义符号\进行转义即可:

str4='I\'m a greate coder'

使用不同的引号包围字符串

str4="I'm a greate coder"

这里外层用双引号,包裹字符串里的单引号。

原始字符串的处理

有时候我们并不想字符串被转义,这种情况下可以使用在字符串的开头加上r前缀,就变成了原始字符串,具体格式是:

str1 = r'原始字符串内容'
str2 = r"原始字符串内容"

举个例子吧:

str4=r'码农\'飞哥真棒'
str5=r"码农\'飞哥真棒"
print(str4)
print(str5)

运行结果是:

码农\'飞哥真棒
码农\'飞哥真棒

字符串的分割方法

在实际开发中,我们经常要根据文件名获取文件的后缀名,这该如何处理呢?

path = "test_user_info.py"

现在要提取后缀名py,其实可以通过split方法,将字符串分割成列表(list),然后从列表中取值,就像下面这样:

suffix = path.split(".")[1]
print("suffix: {}".format(suffix))

字符串拼接的方法

字符串拼接的方法有三种,分别是:

  • 通过join方法

通过join方法的语法格式是str.join(iterable),其中join的条件是 iterable可迭代的,并且列表元素是字符串(str)。就是对iterable中的每个元素进行遍历,然后拼接到str上,这里的str是用于指定合并时的分隔符,如果想拼接之后的字符串是逗号分割,那么写法是通过format方法

  • 通过format方法

format 方法是通过占位符占据要拼接的字符串的位置。

  • 通过+运算符

现有字符串码农飞哥好,,要求将字符串码农飞哥牛逼拼接到其后面,生成新的字符串码农飞哥好,码农飞哥牛逼

str6 = '码农飞哥好,'
# 使用+ 运算符号
print('+运算符拼接的结果=',(str6 + '码农飞哥牛逼'))
#使用join拼接字符串
list2 = ['码', '农', '飞', '哥', '牛', '逼']
print('无符号分割join的拼接结果=', ''.join(list2))
print('逗号分割join的拼接结果=',   ','.join(list2))
# 使用format拼接
str7 = str6 + '{0}'
print('format拼接的结果=',str7.format('码农飞哥牛逼'))
str8=str6+'{0}{1}'
print('format拼接的结果=',str8.format('码农飞哥','牛逼'))

运行结果是;

+运算符拼接的结果= 码农飞哥好,码农飞哥牛逼
无符号分割join的拼接结果= 码农飞哥牛逼
逗号分割join的拼接结果= 码,农,飞,哥,牛,逼
format拼接的结果= 码农飞哥好,码农飞哥牛逼
format拼接的结果= 码农飞哥好,码农飞哥牛逼

大家想想如果还直接使用str6.join('码农飞哥牛逼') 最后的输出结果是啥呢?

str6 = '码农飞哥好,'
print(str6.join('码农飞哥牛逼'))
print(str6)

运行结果是

码码农飞哥好,农码农飞哥好,飞码农飞哥好,哥码农飞哥好,牛码农飞哥好,逼
码农飞哥好,

就是将码农飞哥牛逼遍历,然后每个字符拼接到str6前面,所以前面的 str6是作为一个拼接的分隔符号的。
需要特别注意的是拼接后的字符串是新的字符串,而不是在原有的字符串上修改。所以我们看到原字符串str6在拼接后并没有改变。这个特新跟Java中的String是一样,那么有小伙伴知道str不可变的原因的?欢迎留言哦。
所以在遍历拼接字符串的时候要特别注意赋值,就像这样:

list = ['码', '农', '飞', '哥', '牛', '逼']
str_list = str("")
for str1 in list:
    str_list = str_list + "file {0}\n".format(str1)
print(str_list)

总结

本文详细介绍了Python内置数据类型中的序列类型,介绍了序列的基本概念,序列就是一块存储多个元素的内存空间,这些元素按照一定的顺序排列,介绍了序列的通性,可以把序列当成其他语言中的数组,可以把序列想象成一个酒店。序列通过索引来查找里面的值。最后介绍了字符串,希望对读者朋友们有所帮助。

牛刀小试一下吧

现有如下的字符串

str6='程序猿正在创造世界'

如何根据str6输出结果为正创 的字符串?

如何根据str6输出结果为界世造创的默默猿序程的字符串呢?
小伙伴积极思考。参考答案详见文尾:

参考答案

现有如下的字符串

str6='程序猿正在创造世界'

如何根据str6输出结果为正创 的字符串?如何根据str6输出结果为界世造创的默默猿序程的字符串呢?

这里主要考察的是字符串的切片以及字符串的拼接等知识点。这里还用到了反转函数。

答案一:

str6 = '程序猿正在创造世界'
# 索引的坐标是从0开始的,3表示取第4个字符串,6表示到第七个字符串(不包括),步长是2
print(str6[3:6:2])
# 首先获取反转之后的字符串
str2 = ''.join(reversed(str6))
#将字符串拼接成我们想要的字符
print(str2[0:4] + '默默的' +str2[6:9])

答案二:

str6 = '程序猿正在创造世界'
# 第一题
print(str6[3]+str6[5])
# 第二题
str6=str6[0:3]+str6[5:]
list2 = list(reversed(str6))
list2.insert(4, '的默默')
print(''.join(list2))

到此这篇关于python入门课程第五讲之序列和字符串的文章就介绍到这了,更多相关python序列字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python序列化与反序列化相关知识总结

    Python序列化与反序列 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个 dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把 name 改成 'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收.如果没有把修改后的 'Bill' 存储到磁盘上,下次重新运行程序,变量又被初始化为 'Bob'. 我们把变量从内存中变成可存储或传输的过程称之为序列化,在 Python 中叫 pickling,在其他语言中也被

  • Python字符串的15个基本操作(小结)

    1. 字符串的翻转 利用切片 str1 = "hello world!" print(str1[::-1]) 利用reduce函数实现 from functools import reduce str1 = "hello world!" print(reduce(lambda x, y : y+x, str1)) 2. 判断字符串是不是回文串 str1 = "123455" def fun(string): print("%s"

  • python字符串常规操作大全

    拼接字符串 使用"+"运算符可完成对多个字符串的拼接,"+"运算符可以连接多个字符串并产生一个字符串对象. 字符串不允许直接与其他类型数据拼接. 如果要用来和其他类型拼接,先用str()函数转换成字符串类型. str1 = 'Hello World' str2 = '你好,世界' print(str1+str2) num = 2021 print(str1+str2+str(num)) 计算字符串长度 由于不同的字符所占字节数不同,所以要计算字符串长度,需先了解字符

  • Python序列的推导式实现代码

    推导式comprehensions(又称解析式),是Python的一种独有特性. 推导式是可以从一个数据序列构建另一个新的数据序列(的一种结构体). Python中共有三种推导,在Python2和3中都有支持: 列表推导式 字典推导式 集合推导式 1.列表推导式 作用:用一个表达式创建一个有规律的列表或控制一个有规律列表. 列表推导式又叫列表生成式. (1)快速体验 需求:创建一个0-10的列表. while循环实现 # 1. 准备一个空列表 list1 = [] # 2. 书写循环,依次追加数

  • python序列类型种类详解

    python序列类型包括哪三种 python序列类型包括:列表.元组.字典 列表:有序可变序列 创建:userlist = [1,2,3,4,5,6] 修改:userlist[5] = 999 添加:userlist.append(777) 删除:userlist.remove(4) 或者 del(userlist[3]) pop方法:移除一个元素,默认为最后一个. userlist.pop(3)移除第三个元素,并且返回该值. 插入:userlist.insert(3,555) 排序:userl

  • python字符串的多行输出的实例详解

    1.字符串的每行末尾使用 \ 续行 以多行的形式书写字符串,每行的末尾使用 \ 续行.需要注意输出内容为一行. >>> string = '第一行\ - 第二行\ - 第三行' >>> print(string) '第一行第二行第三行' 2.使用三个单引号或三个双引号来表示字符串 在 Python 中字符串也可以使用三个单引号或三个双引号来表示字符串,这样字符串中的内容就可以多行书写,并且被多行输出. 使用三引号的方式,字符串可被多行书写,且被多行输出,其中不需要显式地

  • python入门课程第五讲之序列和字符串

    目录 前言 序列 序列是什么? 有哪些序列类型呢? 1. 按照能存储的元素划分 2. 按照是否可变划分 序列都有哪些方法以及特性呢? 序列的索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 字符串 字符串的定义 原始字符串的处理 字符串的分割方法 字符串拼接的方法 总结 牛刀小试一下吧 参考答案 本文主要介绍Python数据类型中序列和字符串,文末有彩蛋哦 干货满满,建议收藏,用到时常看常新. 小伙伴们如有问题及需要,请留言告诉我哦~ ~ ~. 前言 上一篇文章我

  • python入门课程第一讲之安装与优缺点介绍

    目录 说在前面 何为Python 如何安装Python呢 Max OS下安装Python3 普通的安装方式 通过Homebrew来安装 Python有哪些优缺点呢? 优点 缺点 Python能干什么 总结 这是Pyhon系列文章的第一篇,本文主要介绍Python的基本概念以及如何安装. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 说在前面 Python语言对各位读者而言一定不会陌生,哪怕没有使用过Python,也一定听说过它.那一句人生苦短,我用P

  • python入门课程第四讲之内置数据类型有哪些

    目录 前言 变量 数据类型总览 Python是弱类型的语言 各数据类型的详细介绍 整数(int) 整数的不同进制 浮点数/小数(float) 小数的书写形式 复数(complex) 布尔类型(bool) 总结 我命油我不油天,今天依然是学习的一天.本文是[Python入门课程]系列的第四篇,其主要介绍Python的内置数据类型中的数字 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 这篇文章主要介绍Python内置数据类型中的数字(Number)

  • python入门课程第三讲之编码规范知多少

    目录 前言 注释 缩进规则 编码规范 标识符命令规范 标识符遵循的规则 关键字 总结 这是Pyhon系列文章的第三篇,本文主要介绍Python程序的编码规范. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 上一篇文章我们介绍如何运行Python程序,如何安装PyCharm开发工具以及如何用PyCharm来运行Python程序,这些都只是开发前的准备工作而已,也就是说仅仅是弄好了脚手架.接下来就是开始编码了.不过在编码之前我们还是先需要了解一下P

  • python入门课程第二讲之怎么运行Python

    目录 前言 如何运行Python程序 交互式编程 编写源文件 关于print 函数 安装PyCharm开发工具 下载安装包 安装 使用 如何下载依赖库呢? 查看是否安装 总结 这是Pyhon系列文章的第二篇,本文主要介绍如何运行Python程序以及安装PyCharm开发工具. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 上一篇文章我们主要介绍了Python语言的基本概念,了解了其是什么,有啥优缺点.这一篇文章主要介绍如何运行Python程序,

  • Python入门_浅谈for循环、while循环

    Python中有两种循环,分别为:for循环和while循环. 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次).for循环的基本结构如下: 具体看这个案例: 设计一个函数,在桌面创建10个文本,用数字从1-10依次给它们命名. def text_create(): path = '/Users/duwangdan/Desktop/' for text_name in range(1,11): # 1-10的范围需要用到r

  • Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法

    本文实例讲述了Python从序列中移除重复项且保持元素间顺序不变的方法.分享给大家供大家参考,具体如下: 问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决. # example.py # # Remove duplicate entries from a sequence while keeping order def dedupe(items): seen = set() for item i

  • Python入门必须知道的11个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于

  • Python入门学习指南分享

    对于初学者,入门至关重要,这关系到初学者是从入门到精通还是从入门到放弃.以下是结合Python的学习经验,整理出的一条学习路径,主要有四个阶段 NO.1 新手入门阶段,学习基础知识 总体来讲,找一本靠谱的书,由浅入深,边看边练. 网上的学习教程有很多,多到不知道如何选择.所有教程在基础知识介绍方面都差不多,区别在于讲的是否足够细(例如运行原理)以及是否有足够的练习.目前推荐大家看书<Python编程 从入门到实践> ,作者是美国教师,内容从基础知识开始,循序渐进,层层深入,适合零基础者.课程内

  • Python从list类型、range()序列简单认识类(class)【可迭代】

    本文实例讲述了Python从list类型.range()序列简单认识类(class).分享给大家供大家参考,具体如下: list类型 定义: items = [] 这就定义了一个名叫items的list. 往里填充数据: items.append(1) items.append(3) items.append(4) print(items) # [1, 3, 4] range序列 上面那个list,如果我们要append进去0~9的数字.最好是利用循环. items = [] for x in

随机推荐