前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 3 学习笔记:序列

Python 3 学习笔记:序列

作者头像
py3study
发布2020-01-03 11:24:11
2.1K0
发布2020-01-03 11:24:11
举报
文章被收录于专栏:python3python3

序列

索引

序列是一块用于放置多个值得连续存储空间,并且按特定顺序排列,每个值(称为元素)都分配一个整数(由左至右则从 0 开始;由右至左则从 -1 开始),称为索引(index)或位置,如下所示:

Python 3 学习笔记:序列
Python 3 学习笔记:序列

可以根据索引获取每个元素实际的值

string = "飞流直下三千尺,疑是银河落九天。" print(string[5]) 复制 则上面的语句的运行结果为“千”。

切片

切片是访问序列中元素的另一种方法,该方法可以访问一定范围内的元素。

1 sequence[startIndex : endIndex : step] 复制 如果 startIndex 未指定,则默认从 0 开始;如果 endIndex 未指定,则默认一直到最后才结束切片;如果 step 未指定,则默认为 1,且其前面的冒号可以省略。

序列相加

在 Python 中支持将多个相同类型的序列相加(或者说拼接更准确),该操作只是单纯的将序列拼接在一起,而不进行其他附加的任何运算。

seq_1 = "飞流直下三千尺," seq_2 = "疑是银河落九天。" print(seq_1 + seq_2) 复制 当然,拼接之后实际上就是得到了一个新的序列,其索引将会重新排序。

序列相乘

数学意义上的乘法就是将一个数重复相加若干次之后得到一个结果,序列的乘法同样如此,也是将一个序列重复拼接若干次之后得到一个新的序列。

1 2 sequence = "Hello, Python !" print(sequence * 3) 复制 in

in 关键字用于检查某个元素是否在被检测的序列中,

1 element in sequence 复制 在 in 的前面加上 not 关键字,则表示检查某个元素是否不在被检测的序列中,

1 element not in sequence 复制 如果满足以上两种操作,则返回 True,否则返回 False。

len()

len() 方法用于计算序列的长度,即序列中元素的个数,

1 len(sequence) 复制 max()

max() 方法用于计算序列中元素的最大值

1 max(sequence) 复制 我们知道数字可以比较大小,那么序列(如字符串、列表等)是如何比较大小的呢?序列在比较大小的时候,会先将元素按照 ASCII 码表转换成数字,然后再进行比较,这样就可以得出最大值或者最小值了,如:

1 2 seq = "Hello, Python!" print(max(seq)) 复制 得到的结果是小写字母 y 。

max() 函数会先将 seq 的所有元素(每个字母、标点)转换成 ASCII码值,然后取出码值最大的元素打印出来。我们常用的字符,如数字、字母等,在 ASCII 码表中的码值大小依次是 数字<大写字母<小写字母。当然,ASCII 码表中不只包含数字、字母,其中还有许多标点符号、特殊符号(具体码表请自行查找)。

当然,如果我们想验证 max() 函数得到的结果是否正确,可以使用 ord() 函数获取 seq 中每个元素的 ASCII 码值,

seq = "Hello, Python!" lst = []

for n in range(len(seq)): lst.append(ord(seq[n]))

print(lst) 复制 得到的结果是 [72, 101, 108, 108, 111, 44, 32, 80, 121, 116, 104, 111, 110, 33],从中可以看出最大值是 121,然后我们再用 chr() 函数看看 ASCII 码值 121 对应的字符是什么,

1 print(chr(121)) 复制 得到的结果也是小写字母 y 。

min()

min() 函数用于计算序列中元素的最小值,原理同 max() 函数一样。

字符串

字符串就是连续的字符序列,可以是计算机能够表示的所有字符的集合。

字符串不可变,在 Python 编程中,因为没有设置字符(char)类型,所以字符串通常使用引号(包括单引号、双引号、三引号)括起来,这三种引号没有本质上的差别,只是单引号、双引号中的内容必须在同一行,而三引号可以在连续的多行上。

常用操作

拼接字符串

使用 “+” 运算符可以将多个字符串拼接在一起,从而生成一个字符串。

重复字符串

使用 ”*“ 运算符可以重复字符串,类似数字的乘法。

计算字符串的长度

使用 len() 函数可以获取字符串中字符的个数,

1 len(string) 复制 其中,string 表示要统计长度的字符串。

en() 函数在计算字符串长度时,不区分符号、数字、英文和汉字,所有字符均按一个字符进行计算。

但是,根据编码方式的不同,字符所占的字节数也不同(这里主要针对汉字,如采用 GBK/GB2312 编码,汉字占 2 个字节;而如果采用 UTF-8/unicode 编码,则汉字占 3 或 4 个字节。在 Python 编程中,数字、英文、符号、下划线和空格均占一个字节)。所以,如果需要取得字符串实际所占的字节数,就需要通过 encode() 方法指定编码格式,例如:

print(len("提放有度,自在为人;保持前进,以致更好!".encode("utf-8")))

print(len("提放有度,自在为人;保持前进,以致更好!".encode("gbk"))) 复制 根据运行结果可以看出,同一句话,采用 UTF-8 编码方式每个汉字字符占 3 个字节,而如果采用 GBK 编码方式则每个汉字字符占 2 个字节。

截取字符串

截取字符串采用切片的方式实现,

1 string[startIndex : endIndex : step] 复制 分割 & 合并字符串

分割字符串 把字符串按照指定的分隔符分成字符串列表,该列表中的元素不包含分隔符,

1 string.split(symbol, maxsplit) 复制 其中,symbol 表示分隔符;maxsplit 表示分割次数,如果不指定则不限制次数。

1 print("提放有度,自在为人,保持前进,以致更好".split(",")) 复制 合并字符串 合并字符串正好与分割相反,是将多个字符串采用固定的分隔符连接在一起,

1 string = symbol.join(sequence) 复制 例如,

1 2 3 list = ["小明", "小红", "小刚"] string = "@".join(list) print(string) 复制 检索字符串

在 Python 中提供多种语句查找指定字符串的方法。

count() 该方法用于检索指定字符串在另一个字符串中出现的次数,如果不存在则返回 0,否则返回出现的次数,

1 string.count(substring, startIndex, endIndex) 复制 string 表示被被查找的字符串;substring 表示查找的子串;startIndex 表示起始位置的索引,默认为零;endIndex 表示结束位置的索引,默认为最后一个字符的索引。

1 print(["小明", "小红", "小刚"].count("小红")) 复制 find() 该方法用于检测是否包含指定的子字符串,如果不存在则返回 -1,否则返回首次出现该子字符串的索引,

1 string.find(substring, startIndex, endIndex) 复制 例如,

1 print("小明和小刚一起去小红家里做客".find("小红")) 复制 in 该关键字用于判断子字符串是否在目标字符串中存在,是则返回 True,否则返回 False,

1 substring in string 复制 例如,

if "小红" in ["小明", "小红", "小刚"]: print("TRUE") else: print("FALSE") 复制 index() index() 和 find() 方法类似,也是用于检测目标字符串是否包含指定的子字符串,但是使用 index() 方法检测时,如果不存在则会抛出异常,

1 string.index(substring, startIndex, endIndex) 复制 例如,

1 print(["小明", "小红", "小刚"].index("小红")) 复制 startswith() 该方法检测目标字符串是否以指定的子字符串开头,如果是则返回 True,否则返回 False,

1 string.startswith(substring, startIndex, endIndex) 复制 例如,

1 print("小红邀请小明和小刚来家里做客".startswith("小红")) 复制 endswith() 该方法检测目标字符串是否以指定的子字符串结尾,如果是则返回 True,否则返回 False,

1 string.endswith(substring, startIndex, endIndex) 复制 字母大小写转换

lower() 该方法用于将字符串中的大写字母转换为小写字母。

1 string.lower() 复制 upper() 该方法用于将字符串中的小写字母转换为大写字母。

1 string.upper() 复制 去除空格 & 特殊字符

strip() 该方法用于去除字符串左、右两侧的空格(包括空格、制表符、回车符、换行符等)和特殊字符,

1 string.strip(symbol) 复制 lstrip() 该方法用于去掉字符串左侧的空格和特殊字符

1 string.lstrip(symbol) 复制 rstrip() 该方法用于去掉字符串右侧的空格和特殊字符

1 string.rstrip(symbol) 复制 格式化字符串

格式化字符串是指先制定一个模版,在这个模版中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(即占位符),而这些符号还不会显示出来。

使用 % 操作符 1 "%[-][+][0][m][.n][symbol]" % strTuple 复制 这种方式是 Python 早期提供的方法,自从 Python 2.6 开始,字符串提供了 format() 方法对字符串进行格式化(目前比较推荐这种方式进行格式化字符串),所以这里就不过多学习了。

format() 方法 基本语法如下,

1 stringTemplate.format(args) 复制 stringTemplate 用于指定字符串的显示样式,即模版;args 用于指定替换模版中占位符的实际内容,多个项之间使用逗号分隔。

创建模版时,需要使用大括号和冒号指定占位符,语法如下,

1 {index:[fill][align][sign][#][width][.precsion][type]} 复制

Python 3 学习笔记:序列
Python 3 学习笔记:序列

其中,type 的类型如下:

Python 3 学习笔记:序列
Python 3 学习笔记:序列

列表

由一系列按特定顺序排列的元素组成,这些元素的类型可以是 Python 中的任何数据类型。列表是 Python 中内置的可变序列,在形式上,是将其所有元素放在中括号([])中,两个相邻的元素使用逗号(,)分隔。列表中的元素可以是不同的数据类型,元素与元素之间互相独立,互不干扰。

创建列表

只需要给列表指定一个标识符,然后将其元素放入其中即可:

1 list = ["hello", "python", 2019, 7, 31] 复制 当然,在实际编程过程中,我们也可以先创建一个空列表,然后再需要的时候,在其中放入元素,

1 list = [] 复制 删除列表

当我们不在需要某个列表的时候,只需要使用 del 语句即可删除:

1 del list 复制 访问列表元素

因为列表也是序列的一种,所以也可以使用索引、切片的方式获取列表中的元素。

操作列表元素

添加元素

可以使用 append() 方法向列表的结尾处追加一个元素,

1 list.append(element) 复制 该方法只能向列表的结尾处追加元素,如果想要向列表的中间插入一个元素,可以使用如下方法,

1 list.insert(index, element) 复制 insert() 方法会向指定的索引处插入一个元素,原位置的元素及其以后的元素会自动向后退一位,即其原索引加一。

上面的两种方法都是想列表中添加一个单一的元素,如果想要向一个列表中添加另一个列表,则可以使用如下方法,

1 list.extend(sequence) 复制 该方法会将 sequence 中的元素按原顺序依次追加到 list 的结尾处。

示例代码:

list = ["hello", "python"]

append() 方法

list.append(2019) print(list)

insert() 方法

list.insert(2, "world") print(list)

extend() 方法

sequ = ["天下", "兴亡"] list.extend(sequ) print(list) 复制 修改元素

通过索引定位到要修改的元素,然后直接给其赋值即可,

1 list[index] = newValue 复制 删除元素

通过索引删除 和修改元素相似,定位要删除的元素的索引,然后使用 del 关键字删除即可,

1 del list[index] 复制 根据元素的值删除 使用列表的 remove() 方法实现,

1 list.remove(elementValue) 复制 对列表进行统计与计算

获取某个元素出现的次数 使用列表的 count() 方法可以获取列表中某个元素的个数,

1 list.count(element) 复制 获取某个元素首次出现的索引 通过列表的 index() 方法可以获取指定元素在该列表中第一次出现的索引,

1 list.index(element) 复制 求纯数字列表中元素的和 如果一个列表的元素全部是数字,则可以使用列表的 sum() 方法求其全部元素的和,

1 sum(list, addend) 复制 其中,addend 为可选参数,默认值 0,如果指定则在列表元素之和的基础上再加上 addend ,如:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(sum(list)) print(sum(list, 3)) 复制 列表元素排序

sort() 方法 该方法用于将列表中的元素按指定方式排序,排序后元素的索引将会改变,

1 list.sort(key=None, reverse=False) 复制 key 用于指定从每个元素中提取一个用于比较的键;reverse 默认为 False,表示升序排列,如果为 True 则降序排列。

sort() 方法没有返回值,所以只能对列表排序后,输出该列表,

list = ["hello", "Python", "world", "Welcome", "list"]

list.sort() print(list) 复制 对全部元素均为数字的列表排序很简单,如果是对字符串元素进行排序,则先对大写字母排序,然后再对小写字母进行排序。如果想不区分大小写排序,需要指定 key 参数的值,如 key=str.lower 。

而且,需要注意如果一个列表中的元素既有数字,又有字符串,则无法使用 sort() 方法进行排序。

sorted() 函数 在 Python 中,提供了一个内置的 sorted() 函数,用于对列表进行排序,该方法返回一个排序后的列表,而原列表保持不变,

1 new_list = sorted(old_list, key=None, reverse=False) 复制 其中,参数 key 和 reverse 的作用和 sort() 方法的参数一样,例如:

old_list = ["hello", "Python", "world", "Welcome", "list"]

new_list = sorted(old_list, key=str.lower, reverse=True) print(new_list) 复制 元组

元组与列表相似,也是有一系列按特定顺序排列的元素(可以是 Python 中的任意数据类型)组成,但元组是不可变序列,即不能向元组中追加、删除元素。在形式上,元组的所有元素被放入一对小括号中,两个相邻的元素使用逗号分隔,元素之间没有任何关系。由于元组的不可变特性,所以元组一般用于保存程序中不可修改的内容。

创建元组

只需要给元组指定一个标识符,然后在其中填充元素即可,

1 tuple = ("hello", "python", 2019, 7, 31) 复制 我们也可以创建一个空元组,

1 tuple = () 复制 在 Python 中,元组也不是一定就会使用小括号括起来,只要将一组元素使用逗号分隔开来,Python 就可以视其为元组,

1 tuple = "hello", "python", 2019, 7, 31 复制 当我们使用 print() 函数打印该元组时,这些元素将会被小括号括起来。

如果创建一个只有一个元素的元组,则需要在元素后面加一个逗号,否则该元组将会被视为一个字符串,或者其他数据类型。

删除元组

因为元组已经创建就不可再改变,所有只能删除元组,而不能删除其中的元素,

1 del tuple 复制 访问元组元素

元素也是一种序列,所以也可以使用索引、切片的方式访问其中的元素。

元组与列表的区别

列表属于可变序列,其元素可以被修改或删除;而元组不能,只能整体替换 元组比列表的访问和处理速度快 元组可以作为字典的键,而列表不可以 字典

在 Python 中,字典也是可变序列,但是字典没有索引,而是以 键-值 对的形式存储数据。字典具有一下特征;

通过 键 而不是索引来读取 字典是任意对象的无需集合 字典是可变的,并且可以任意嵌套 字典的 键 必须是唯一的 字典的 键 必须不可变 创建字典

定义字典时,每个元素都包含两个部分 键 和 值 ,它们之间使用冒号分隔,组成一个元素,元素和元素之间使用逗号分隔,

1 dictionary = {key_1:value_1, key_2:value_2, ..., key_n:value_n} 复制 元组中每个元素的 键 必须是唯一的、不可变的,可以是数字、字符串或者元组。元素的 值 可以是 Python 中的任何数据类型,且可以不是唯一的。

除了直接创建字典,也可以通过 dict() 和 zip() 函数将列表、元组组合成一个字典,

1 dictionary = dict(zip(tuple, list)) 复制 如果 tuple 和 list 的长度不同,则以短的为基准创建相同长度的字典。

删除字典

删除字典同样可以使用 del 关键字,

1 del dictionary 复制 如果不想删除字典,而只是想删除其中的全部元素,则可以使用 clear() 方法,

1 dictionary.clear() 复制 访问字典元素

因为字典不像列表、元组一样具有索引,所以不能通过索引、切片的方式访问其元素。字典只能通过 键 访问其对应的 值。

操作字典元素

添加元素

字典同列表一样是可变序列,所以可以向其中添加元素,只需要指定元素的键和值即可,

1 dictionary[key] = value 复制 只要新加入的 key 在字典中已存在的键中不存在即可。

修改元素

修改字典的元素其实就是变相的添加元素,只需要 key 值在字典中已存在,就会将其对应的 value 替换成新的值。

删除元素

删除字典中的元素同样可以使用 del 关键字,

1 del dictionary[key] 复制 将字典元素的 key 删除,其对应的 value 也会被删除,则这个元素在字典中就不存在了。

集合

Python 中的集合和数学中的集合相似,也是用于保存不重复元素的,有可变集合和不可变集合两种。在形式上,集合中的元素之间用逗号分隔,所有元素被放在大括号中。集合最好的应用就是去除重复元素,因为集合中的每个元素都是唯一的。

创建集合

直接将所有元素放入括号中,然后给定一个标识符即可,

1 set = {element_1, element_2, ..., element_n} 复制 如果创建集合的时候,不小心输入了若干个重复的元素,Python 会自动只保留一个。

我们也可以使用 set() 函数将列表、元组转换成集合,

1 set = set(list/tuple) 复制 如果我们想创建一个空集合,也只能使用 set() 方法,而不使用空的大括号(因为空的大括号表示一个空字典)。

删除集合

集合同样可以使用 del 关键字删除,

1 del set 复制 操作结合

添加元素

可以使用 add() 方法向集合中添加元素,

1 set.add(element) 复制 删除元素

可以使用 pop() 或 remove() 方法删除集合中的元素,或者使用 clear() 方法清空集合中的元素,

1 set.pop() 复制 pop() 方法会按顺序删除集合中的第一个元素。

1 set.remove(element) 复制 remove() 方法需要指定要删除的元素,如果该元素不存在,则抛出异常。

1 set.clear() 复制 clear() 方法会删除集合中的所有元素,使其变为一个空集合。

集合运算

交集

在 Python 中,求集合的交集使用 & 符号进行运算。

并集

在 Python 中,求集合的并集使用 | 符号进行运算。

差集

在 Python 中,求集合的差集使用 - 符号进行运算。

对称差集

在 Python 中,求集合的对称差集使用 ^ 符号进行运算。

例如,

1 2 3 4 5 6 7 set_1 = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19} set_2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

print(set_1 & set_2) print(set_1 | set_2) print(set_1 - set_2) print(set_1 ^ set_2)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • append() 方法
  • insert() 方法
  • extend() 方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档