本文介绍Python3序列类型对象(字符串、列表、元组)及其操作方法。
Python中的主要序列类型:
- str(字符串):由字符构成的序列;
- list(列表):一个可以修改数据项的序列类型,使用也最灵活;
- tuple(元组):包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。
1. 序列类型通用的操作符和函数
| 操作符 | 描述 |
|---|---|
| x in s | 如果x是s的元素,返回True,否则返回False |
| x not in s | 如果x不是s的元素,返回True,否则返回False |
| s + t | 连接s和t |
| s*n或n*s | 将序列s复制n次 |
| s[i] | 索引,返回序列的第i个元素 |
| s[i: j] | 分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素) |
| s[i: j: k] | 步骤分片,返回包含序列s第i到j个元素以j为步数的子序列 |
| len(s) | 序列s的元素个数(长度) |
| min(s) | 序列s中的最小元素 |
| max(s) | 序列s中的最大元素 |
| s.index(x) | 序列s中第一次出现元素x的位置 |
| s.count(x) | 序列s中出现x的总次数 |
2. str:字符串
在Python中,字符串是用两个双引号"或者单引号’括起来的一个或多个字符。
当字符串中有引号时,可以使用另外一类引号将字符串括起来,也可以使用转义字符\
strip():移除字符串首尾空格endswith(chars:str):返回布尔值,字符串是否以chars作为结尾startswith(chars:str):返回布尔值,字符串是否以chars作为开头split():'管理部,人事部,销售部'.split(',')指定分隔符分隔文本,返回分割后的字符串数组replace(str1,str2):将字符串中所有str1替换成str2format():字符串格式化。比较简单的用法就是在原字符串中用花括号{}指代要用入参来替换的内容,如代码"The sum of 1 + 2 is {0}".format(1+2)返回'The sum of 1 + 2 is 3'。我个人感觉这么写比直接用加号的优势主要在于好看(官方文档:https://docs.python.org/zh-cn/3/library/stdtypes.html#str.format)- 字符串直接用
+就可以连接多个字符串。还可以以这种形式将各种对象自动转换为字符串对象插入文本,如:- 字符串
mode='train':"%s_mode_dataset" % mode(用mode替换%s)
- 字符串
find(str):返回入参在原字符串中第一次出现时的索引值。如果不包含入参,返回-1rfind(str):返回入参在原字符串中从右边起始第一次出现时的索引值join(list):用原字符串来连接入参列表中的每一个元素,如'-'.join('我不想上学')的返回值是我-不-想-上-学upper()和lower():返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。字符串中非字母字符保持不变。isupper()和islower():如果字符串至少有一个字母,并且所有字母都是大写或小写,方法就会相应地返回布尔值True。否则,该方法返回False。capitalize():返回一个与原字符串内容相同、第一个字母大写其他字母小写的新字符串1isalpha()返回True,如果字符串只包含字母,并且非空isalnum()返回True,如果字符串只包含字母和数字,并且非空;isdecimal()返回True,如果字符串只包含数字字符,并且非空;isspace()返回True,如果字符串只包含空格、制表符和换行,并且非空;istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。isdigit()返回True,如果字符串可以转换为整数。rjust()、ljust()和center()通过插入空格来对齐文本。 第一个参数是一个整数长度,用于对齐字符串。第二个可选参数将指定一个填充字符,取代空格字符strip()、rstrip()和lstrip()删除空白字符。有一个可选的字符串参数(不能用正则表达式),指定两边的哪些字符应该删除format()<模板字符串>.format(<逗号分隔的参数>)- 字符串前面加
r:防止字符转义2 - 字符串前面加
u:用Unicode格式编码字符串(一般用在中文字符串前,预防源码储存格式导致乱码问题) - 字符串前面加
b:转换为bytes对象 - 字符串前面加
f:格式化
举例:
for i in range(3):
print(f"i={i}, i+1={i+1}")
输出:
i=0, i+1=1
i=1, i+1=2
i=2, i+1=3
3. 不同编码字符格式之间的转换
- 字符串和bytes对象之间的转换3:
str.encode('utf-8')
bytes.decode('utf-8')
4. list:列表
count(obj):计算列表中某元素出现的次数append(obj):添加一个对象extend(obj):将另一个集合对象的所有元素逐一添加到列表中(可参考我之前撰写的博文:Python3 list不去重合并)remove(obj):删除一个对象pop(index):删除列表中的元素(默认最后一个),返回被删除的元素。[^20]index(obj):返回对象在列表中的索引(第一个对象)- 列表生成式/列表解析式,示例:
[i for i in range(10)] - 列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(<、<=、==、!=、>=、>)进行比较,列表的比较实际上是单个数据项的逐个比较。
- 列表也可以包含其他列表值。这些列表的列表中的值,可以通过多重下标来访问。
- 虽然下标从0 开始并向上增长,但也可以用负整数作为下标。整数值−1 指的是列表中的最后一个下标,−2 指的是列表中倒数第二个下标,以此类推。
- 切片
print(li[::-1]) #可以实现列表的反转,但不改变原列表
| 函数或方法 | 描述 |
|---|---|
| ls[i] = x | 替换列表ls第i数据项为x |
| ls[i: j] = lt | 用列表lt替换列表ls中第i到j项数据(不含第j项,下同) |
| ls[i: j: k] = lt | 用列表lt替换列表ls中第i到j以k为步的数据 |
| del ls[i: j] | 删除列表ls第i到j项数据,等价于ls[i: j]=[] |
| del ls[i: j: k] | 删除列表ls第i到j以k为步的数据 |
| ls += lt 或 ls.extend(lt) | 将列表lt元素增加到列表ls中 |
| ls *= n | 更新列表ls,其元素重复n次 |
| ls.append(x) | 在列表ls最后增加一个元素x |
| ls.clear() | 删除ls中所有元素 |
| ls.copy() | 生成一个新列表,复制ls中所有元素 |
| ls.insert(i, x) | 在列表ls第i位置增加元素x |
| ls.pop(i) | 将列表ls中第i项元素取出并删除该元素 |
| ls.remove(x) | 将列表中出现的第一个元素x删除 |
| ls.reverse(x) | 列表ls中元素反转 |
| ls.sort([reverse,key]) | 排序,reverse=True逆序排序 |
| ls.count(x) | 特定值在列表中出现的次数 |
5. tuple:元组
- 元组输入时用圆括号()。
- 如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号,表明这种情况。否则,Python 将认为,你只是在一个普通括号内输入了一个值。逗号告诉 Python,这是一个元组(不像其他编程语言,Python 接受列表或元组中最后表项后面跟的逗号)。
('西南财经大学',) - 使用()创造空元组
- 元组解包:可以一口气将元组赋值给多个变量
employeeInfo = ('10948', '刘利')
empNo, empName = employeeInfo - 可以将元组用作字典的键。
函数的参数是以元组形式传递的。 - 可以切片的基础数据对象:字符串,列表,元组
- 对迭代器iterator的操作:循环,输出下一个对象
next(iterator_object),转换为list对象(list(iterator_object),以便切片、取数等操作)
itertools库可参考我撰写的另一篇博文:itertools:Python3迭代库(持续更新ing…)
本文详细介绍了Python3中的字符串、列表和元组三种主要序列类型,包括它们的基本操作符和函数,如字符串的格式化、编码转换,以及列表和元组的增删改查方法。
4561

被折叠的 条评论
为什么被折叠?



