python基础(五)——序列与列表
·
容器数据类型
序列
**定义:**序列(Sequence)是一种基本且核心的数据结构,允许以有序方式存储和操作数据,可以包含不同类型的元素且元素值可重复。
特点:
- 支持通过索引访问和修改元素
- 常见类型包括:列表(List)、元组(Tuple)、字符串(String)
操作:
- 索引:sequence[0]
- 切片:sequence[1:3]
- 相加:sequence1 + sequence2
- 乘法:sequence * 3
- 检查成员:x in sequence
- 计算长度:len(sequence)
- 计算最大值、最小值:max(sequence)、min(sequence)
列表
创建列表
list1 = [1,2,3,4,5]
访问列表
list1 = [100, 200, 300, 400]
for i in range(0, 4):
print(list1[i])
# 如果访问一个不存在的索引则会报错list index out of range
# print(list1[4])
# 倒序访问,从末尾开始,-1则是最后一个
print(list1[-1]) # 400
# 切片操作
list2 = list1[:]
print(list2) # [100, 200, 300, 400]
list3 = list1[1:3] # 取索引1-3,不包括3
print(list3) # [200, 300]
print(list1[2:]) # 从指定位置到末尾[300,400]
列表的操作
向列表中添加元素
list1 = [100, 200, 300, 400]
# 追加元素
list1.append(700)
print(list1) # [100, 200, 300, 400, 700]
# 插入元素
list1.insert(1, 900) # 在索引1的位置插入900
print(list1) # [100, 900, 200, 300, 400, 700]
列表相加
list1 = [1, 2, 3, 4, 5]
list2 = ["a", "b", "c"]
# 内容拼接
print(list1 + list2) # [1, 2, 3, 4, 5, 'a', 'b', 'c']
列表乘法
list1 = [1, 2, 3, 4, 5]
print(list1 * 2) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
修改列表中的元素
通过下标修改
list1 = [1, 2, 3, 4, 5]
list1[0] = 100
list1[-1] = 200
print(list1) # [100, 2, 3, 4, 200]
通过切片修改
list1 = [1, 2, 3, 4, 5]
# list[start:end]=[new_values]
list1[0:1] = [10]
print(list1) # [10, 2, 3, 4, 5]
获取列表长度
list1 = [1, 2, 3, 4, 5]
print(len(list1)) # 5
获取元素中的最大值和最小值
list1 = [1, 2, 3, 4, 5]
print(max(list1)) # 5
print(min(list1)) # 1
求列表元素之和
列表元素必须为数值类型(int/float)
包含非数值元素(如字符串)时会报TypeError
list1 = [1, 2, 3, 4, 5]
print(sum(list1)) # 15
遍历列表
list1 = [100, 200, 300, 400, 500]
# 直接遍历
for i in list1:
print(i)
# range函数遍历
for i in range(len(list1)):
print(list1[i])
# 使用enumerate()同时获取列表的下标和元素
for index, value in enumerate(list1):
print(index, value)
# 使用enumerate()同时获取列表的下标和元素,指定起始参数
for index, value in enumerate(list,1): # 从1开始遍历列表
print(index, value)
列表的删除操作
list1 = [11, 22, 33, 44]
del list1[0]
print(list1) # [22, 33, 44]
嵌套列表
list1 = [[1, 2, 3], ["a", "b", "c"], [True, False, True]]
for i in list1:
print(i)
for j in i:
print(j)
列表推导式
定义:通过表达式快速创建列表的简洁语法
# 快速创建列表
list1 = [i for i in range(1, 11)] # 生成1-10的列表
print(list1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 运算扩展
# 表达式运算:可以在前面部分进行数学运算
list2 = [x**2 for x in range(5)]
print(list2) # [0,1,4,9,16]
# 条件过滤:可以添加if条件筛选元素,如
list3 = [x**2 for x in range(5) if x % 2 == 0] # 只保留偶数的平方
print(list3) # [0, 4, 16]
# 列表赋值
list4 = [x for x in list3]
print(list4) # [0, 4, 16]
# 列表整合
list5 = ["a", "b", "c"]
list6 = [1, 2, 3]
# 笛卡尔积:通过嵌套推导式实现两个列表的全组合
list7 = [(i, j) for i in list5 for j in list6]
print(
list7
) # [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
zip函数
功能:将多个列表按位置打包成元组
letters = ["a", "b", "c"]
numbers = [1, 2, 3, 4]
zipped = list(zip(letters, numbers))
print(zipped) # [('a', 1), ('b', 2), ('c', 3)]
常用的列表操作
list1 = [1, 2, 3, 4, 5, 6]
# 添加元素
list1.append(666)
print(list1) # [1, 2, 3, 4, 5, 6, 666]
# 也可以添加列表整体
list1.append([333, 444, 555])
print(list1) # [1, 2, 3, 4, 5, 6, 666, [333, 444, 555]]
# 扁平化添加
list1.extend([7, 9, 10])
print(list1) # [1, 2, 3, 4, 5, 6, 666, [333, 444, 555], 7, 9, 10]
# 列表排序
list2 = [11, 2, 45, 4, 55]
# 排序操作直接修改原列表,不返回新列表,默认升序
list.sort(list2)
print(list2) # [2, 4, 11, 45, 55]
# 降序
list.sort(list2, reverse=True)
print(list2) # [55, 45, 11, 4, 2]
| 函数 | 说明 |
|---|---|
list.insert(index, x) |
在指定位置插入 x |
list.append(x) |
在列表末尾追加 x |
list1.extend(list2) |
在列表 1 的末尾追加列表 2 的数据 |
del list[index] |
删除指定位置的数据或切片 |
list.remove(x) |
删除第一次出现的 x |
list.pop([index]) |
删除指定位置的数据,默认为末尾数据 |
list.clear() |
清空列表中元素 |
list[index] = x |
修改指定位置的数据 |
list1[start:end] = list2 |
修改列表切片的数据 |
sorted(list[, reverse=True]) |
返回排序后的新列表,可选降序 |
list.sort([reverse=True]) |
对列表就地排序,可选降序 |
list.reverse() |
反转列表中的元素 |
list.index(x[, start[, end]]) |
返回 x 在列表中首次出现的位置,可指定起始和结束范围 |
list.count(x) |
返回 x 的数量 |
len(list) |
返回列表元素个数 |
max(list) |
返回列表中最大值 |
min(list) |
返回列表中最小值 |
sum(list) |
返回列表中所有元素和 |
list.copy() |
拷贝列表 |
list(x) |
将序列转换为列表 |
更多推荐



所有评论(0)