提示:提示:python中的序列型组合数据类型:字符串、列表、元组三个
前言
提示:这里可以添加本文要记录的大概内容:
python中的序列型组合数据类型:字符串、列表、元组三个。它们都是有序的数据结构,元素按照特定的顺序排列,并且可以通过索引访问。
本章节仅对列表进行介绍。
提示:以下是本篇文章正文内容,下面案例可供参考
一、序列型组合数据类型的通用操作
序列的通用操作:由于字符串、列表和元组都是序列类型,它们支持一些通用的操作。
函数名 | 描述 | 实例 |
---|---|---|
seq[index] | 索引访问 | 从左往右索引从 0 开始;从右往左索引从 -1 开始; |
sep2=seq1[start:end:step] | 切片操作 | 范围为左闭右开的区间 [start,end),step是步长,默认为 1且省略,返回切片结果 |
len(seq) | 长度计算 | 获取序列中元素的数量 |
element in seq 或 element not in seq | 成员检查 | 可以检查某个元素是否存在于序列中 |
for循环遍历序列中的每个元素 | 迭代 | 使用 for 循环遍历序列中的每个元素 |
s1+s2 | 连接 | 使用 + 操作符可以将两个序列连接在一起 |
s1 * n 或 n * s1 | 重复 | 使用 * 操作符可以将序列重复指定次数 |
min(seq) 和 max(seq) | 获取可比较元素的序列seq中的最小值和最大值 | 若是字符串则返回ASCII值seq中最小/最大的字符;数值则按照最小/最大的值 |
seq1.count(seq2) | 计数 | 可以统计序列seq2在序列seq1中出现的次数 |
seq1.index(seq2) | 查找 | 可以找到序列seq2中序列seq1中第一个索引位置 |
for index, char in enumerate(s1): print(f"Index: {index}, Char: {char}") | 枚举 | 可以同时获取序列的索引和元素 |
s1 = "hello"
s2 = "world"
lst1 = [1, 2, 3, 4, 5]
lst2 = [4, 5, 6, 6]
t1 = (7, 8, 9, 10)
t2 = (9, 10, 11, 12)
print(s1[1]) # 输出:e
print(lst1[2]) # 输出:3
print(t1[-1]) # 输出:10
print(s1[1:4]) # 输出:ell
print(lst1[1:4]) # 输出:[2, 3, 4]
print(t1[1:4:2]) # 输出:(8, 10)
print(s1[::-1]) # 输出:olleh(反转字符串、列表、元组均可)
print(lst1 [::2]) # 输出:[1, 3, 5](每隔一个元素取一个)
print(len(s1)) # 输出:5
print(len(lst1)) # 输出:5
print(len(t1)) # 输出:4
print("e" in s1) # 输出:True
print(3 in lst1) # 输出:True
print(19 not in t1) # 输出:True
for char in s1:
print(char) # 逐个打印字符 h e l l o
for num in lst1:
print(num) # 逐个打印列表元素 1 2 3 4 5
for item in t1:
print(item) # 逐个打印元组元素 7 8 9 10
print(s1 + " " + s2) # 输出:hello world
print(lst1 + lst2) # 输出:[1, 2, 3, 4, 5, 4, 5, 6, 6]
print(t1 + t2) # 输出:(7, 8, 9, 10, 9, 10, 11, 12)
print(s1 * 3) # 输出:hellohellohello
print(lst1 * 2) # 输出:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(t1 * 3) # 输出:(7, 8, 9, 10, 7, 8, 9, 10, 7, 8, 9, 10)
print(min(s1)) # 输出:e(按字母顺序返回ASCII值中最小的字符)
print(max(lst1)) # 输出:5
print(min(t1)) # 输出:7
s3 = "hello"
lst3 = [1, 2, 3, 2, 4]
t3 = (5, 6, 7, 6, 8)
print(s3.count("l")) # 输出:2
print(lst3.count(2)) # 输出:2
print(t3.count(6)) # 输出:2
print(s3.index("l")) # 输出:2
print(lst3.index(2)) # 输出:1
print(t3.index(6)) # 输出:1
for index, char in enumerate(s1):
print(f"Index: {index}, Char: {char}")
# Index: 0, Char: h
# Index: 1, Char: e
# Index: 2, Char: l
# Index: 3, Char: l
# Index: 4, Char: o
for index, num in enumerate(lst1):
print(f"Index: {index}, Num: {num}")
# Index: 0, Num: 1
# Index: 1, Num: 2
# Index: 2, Num: 3
# Index: 3, Num: 4
# Index: 4, Num: 5
二、列表(list)定义及特点
定义:列表是一个可变的有序序列,可以包含不同类型的数据。
特点
• 可变:可以修改列表中的元素。例如 lst[2] = ‘h’ 修改列表的元素成功。
• 支持索引和切片:可以通过索引访问单个元素,通过切片获取子列表。例如 :print(lst[1])、print(lst[1:3])
三、列表(list)类型的使用
3.1 支持列表方法:增、删、改、查
序号 | 函数名 | 描述 | 实例 |
---|---|---|---|
1 | lst.append() | 列表末尾添加一个元素 | |
2 | lst.extend([5, 6]) | 在列表末尾添加多个元素 | |
3 | lst.insert(2, “new”) | 在指定位置插入一个元素 | |
4 | lst.remove(4) | 删除第一个值为 4 的元素 | ()内为列表中的元素 |
5 | lst.pop() | 移除并返回最后一个元素 | 一般 value=lst.pop() 获取删除的值 |
6 | lst[2] = ‘h’ | 可以将对应索引值直接修改 | |
7 | lst2 = lst[1:4] | 切片操作,返回切片后的列表 |
lst = [1, 2, 3]
lst.append(4) # 在列表末尾添加一个元素
print(lst) # 输出:[1, 2, 3, 4]
lst.extend([5, 6]) # 在列表末尾添加多个元素
print(lst) # 输出:[1, 2, 3, 4, 5, 6]
lst.insert(2, "new") # 在指定位置插入一个元素
print(lst) # 输出:[1, 2, 'new', 3, 4, 5, 6]
del lst[2] # 删除索引为 2 的元素
print(lst) # 输出:[1, 2, 3, 4, 5, 6]
lst = [1, "sd", 3, 0, 5]
lst2 = lst[1:4]
print(lst2) # 输出:['sd', 3, 0]
3.2 支持列表方法~排序/清空列表
序号 | 函数名 | 描述 | 实例 |
---|---|---|---|
1 | lst.sort() | 对自身从小到大排序,没有返回值 | |
2 | sorted(list) | 返回排序后的列表,但原列表不变 | 从小到大排序 |
3 | lst.reverse() | 对自身排序反转,没有返回值 | lst[::-1],原列表不变,返回列表排序反转 |
4 | lst.clear() | 对自身清空,没有返回值 |
lst1=[1,3,5,2,8,6,1]
x1=lst1.sort() # 仅将list1进行重新排序,不会赋值给x1
print(lst1) # 输出:[1, 1, 2, 3, 5, 6, 8]
print(x1) # 输出:None
lst2=[1,3,5,2,8,6,1]
x2=sorted(lst2) # 将重新排序赋给x2,自身不变
print(lst2) # 输出:[1, 3, 5, 2, 8, 6, 1]
print(x2) # 输出:[1, 1, 2, 3, 5, 6, 8]
lst2.clear() # 清空列表
print(lst) # 输出:[]
3.3 列表推导式
列表推导式是一种简洁的方式来创建列表.
# 创建一个包含 0 到 9 的平方的列表
squares = [x**2 for x in range(10)]
# 将x的每一次值,都经过x**2
print(squares) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 创建一个包含偶数平方的列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 将x的每一次值,在if判断为true时,再经过x**2
print(even_squares) # 输出:[0, 4, 16, 36, 64]