引言:
Python中的序列:列表、元组、字符串
Python序列
python序列
序列:分为两种
- 有序序列:列表、元组、字符串、(range、zip、map、enumerate等)
- 无序序列:集合、字典
也可以这么分:
- 可变序列:列表、集合、字典
- 不可变序列:元组、字符串、(range、zip、map、enumerate等)
通常称序列就是有序序列,这里我们只讨论有序序列
序列:Python中最基本的数据结构
序列中的每个元素都分配一个数字 ——它的位置,或索引,第一个索引是0,第二个索引是1,依此类推
六个内置序列
python有六个内置序列
- 列表
- 元组
- 字符串
- Unicode字符串(简单归在字符串中讨论)
- buffer对象(不讨论)
- xrange对象(不讨论)
列表
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
要点:
- 列表存储的内容不需要具有相同的数据类型
- 列表支持切片操作(切片有基本的操作和较高阶的操作)
- 区别列表的添加方法
append
、extend
、insert
- 列表的删除,注意区别
remove
和pop
的区别
- 列表的脚本操作
列表存储的内容不需要具有相同的数据类型
1 2
| arr = [1, 2, 3, 4, "字符串", ["另一个列表"]]
|
列表支持切片操作
序列此处的切片方法类似,其他的序列将不再详细叙述切片操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| ''' 切片操作 list[a:b:c]可以传入一个、两个、或三个参数 一个参数:直接显示对应index的元素。 注意:正数从0开始,从左向右;负数从-1开始,从右向左 两个参数:按两个参数对应的index截取出一个list。 注意:切片为左闭右开区间,即[a,b),index为b的元素是不在其中的 三个参数:第三个参数代表步进,默认为1,如果为负数,代表从右向左 ''' arr = [1, 2, 3, 4, "字符串", ["另一个列表"]]
print(arr[:]) print(arr[::-1]) print(arr[3]) print(arr[-3]) print(arr[1:4]) print(arr[1:4:2])
print(arr[:4]) print(arr[1:]) print(arr[::2]) print(arr[1::2])
print(arr[1:3:-2]) print(arr[3:1:-2]) ''' 以上两个为什么是这样呢? 我们可以这样理解: 1. arr[1:3:-2] 其中1,3代表获得[1,3)的数据,是从左向右的,但是-2又是从右向左,方向不一致,因此打印的结果为空列表 2. arr[3:1:-2] 其中3:1 从右向左获得[3,1)的数据,-2也是从右向左,方向一致,所以不为空 ''' print(arr[3:1]) print(arr[1:100]) print(arr[100:4:-1])
|
区别列表的添加方法append
、extend
、insert
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
arr.append("添加") print(arr)
res = arr.append("会有返回值吗?") print(res)
newArr = [985, 211] arr.append(newArr) print(arr)
newArr = [985, 211] print(len(arr)) res = arr.extend(newArr) print(len(arr)) print(res)
arr = arr + newArr
print(len(arr))
newArr = [985, 211] res = newArr.insert(0, "双一流") print(newArr)
print(res)
newArr.insert(-1, "C9") print(newArr)
|
总结一下三种添加操作的区别:
函数 |
append |
extend |
insert |
参数 |
一个:要加入的元素 |
一个:参数必须可迭代(例如列表、元组、字符串) |
两个:一个index,一个元素的值 |
添加数组 |
作为一个元素添加 |
合并两个数组 |
不能 |
是否有返回值 |
无 |
无 |
无 |
列表的删除,注意区别remove
和pop
的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| newArr = [985, 211, "C9", "Top2", "双非"]
res = newArr.pop() print(newArr) print(res)
newArr.pop(1) print(newArr)
res = newArr.remove("C9") print(res)
|
区别一下两个删除操作:
函数 |
pop |
remove |
参数 |
一个:index,默认为最后一个下标 |
一个:要删除的值,如果列表没有这个值,报错 |
返回值 |
有,被删除的元素 |
无 |
列表的脚本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
len(arr)
arr = arr + newArr arr.extend(newArr)
newArr = [1] newArr *= 5 print(newArr)
res = 1 in newArr print(res)
newArr = [1, 2, 3, 4, 5] for i in newArr: print(i)
for i in range(len(newArr)): print(newArr[i])
|
元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
要点:
- 元组的创建,尤其注意只有一个元素的情况,末尾要加逗号
- 元组的访问
- 元组不允许修改值,但是元组允许拼接
- 元组不允许删除元素,只允许删除整个元组
- 元组的脚本运算
- 任意无符号的对象,以逗号隔开,默认为元组
元组创建
1 2 3 4 5
| tup = () tup = (1) tup = (1,) tup = (1, 2, 3, "你好", [1, 2])
|
元组访问
元组拼接
1 2 3 4
| tup1 = (1, 3) tup2 = (2, 4) print(tup2 + tup1)
|
元组删除
元组脚本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| tup = (1, 2, 3, "你好", [1, 2])
len(tup)
tup = tup + tup1
res = 3 in tup print(res)
(1,)*5
for i in tup: print(i)
|
无关闭分隔符
1 2 3 4 5 6
|
x, y = 1, 2
print(x, y, sep=" ")
|
字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('
或"
)来创建字符串。
本节过于基础,不再进行多余叙述
基础内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| str = 'a' str = "你好"
print(str[0]) print(str[::-1])
str1 = "你" str2 = "好" print(str1 + str2)
str = "abcDefg" print("b" in str) print("d" in str)
errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> '''
uStr = u"Unicode String" print(uStr) uStr = u'Hello\u0020World !' print(uStr)
print(ord(" ")) print(chr(97))
|
内置函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
str = "abcDa Bye" print(str.capitalize()) print(str.count("b")) print("第一个数{}第二个数{}".format(3, 4)) print("第二个数{1}第一个数{0}".format(1, 2)) print(str.index("a")) print(",".join(str)) print(str.lower()) print(str.upper()) print(str.swapcase())
print(max(str)) print(min(str))
print(str.replace("a", "A"))
print(" str ".strip())
|