容器数据类型

序列

**定义:**序列(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(list1): # 从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) 将序列转换为列表
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐