DAY3——PYTHON——复合类型之序列类型、映射类型和集合类型总结

序列类型

序列类型是元素有序排列的数据结构,可通过索引访问元素。

有三种基本序列类型:list, tuple 和 range 对象;

列表是可变的,支持增删改操作;

元组是不可变的,创建后不能修改;

列表(List)

概念

List(列表)是Python中一种有序、可变的数据结构,可以存储不同类型的元素。列表用方括号[]表示,元素之间用逗号分隔。

my_list = [1, "apple", 3.14, True]

创建List

列表可以通过直接赋值或使用list()构造函数创建。

fruits = ["apple", "banana", "cherry"]

 使用List

numbers = list(range(1, 5))  # 生成[1, 2, 3, 4]

访问List元素

列表元素通过索引访问,索引从0开始。负数索引表示从末尾开始计数。

print(fruits[0])   # 输出"apple"  
print(fruits[-1])  # 输出"cherry"

常用操作

添加元素:

  • append():在末尾添加单个元素。
  • extend():添加多个元素(如另一个列表)。
  • insert():在指定位置插入元素。
fruits.append("orange")  
fruits.extend(["grape", "melon"])  
fruits.insert(1, "pear")

删除元素:

  • remove():删除指定值的元素。
  • pop():删除指定索引的元素并返回其值。
  • del:删除指定索引或切片。
fruits.remove("apple")  
popped_item = fruits.pop(2)  
del fruits[0:2]

切片操作 

切片用于获取列表的子集,语法为list[start:stop:step]

numbers = [0, 1, 2, 3, 4, 5]  
subset = numbers[1:4]  # 获取[1, 2, 3]  
reverse = numbers[::-1]  # 反转列表

元组(tuple)

定义

元组是Python中的一种不可变有序序列,用圆括号()表示。与列表不同,元组创建后内容不可修改(增删改),但可以嵌套可变对象(如列表)。

示例

元组的基本操作

访问元素
通过索引或切片获取元素,索引从0开始:

data = (10, 20, 30)  
print(data[1])  # 输出: 20  
print(data[:2])  # 输出: (10, 20)  

元组的不可变性

元组一旦创建,不能修改其元素,否则会引发TypeError

t = (1, 2)  
t[0] = 3  # 错误!不支持修改  

元组的常用方法

计数(count)
统计某元素出现的次数:

t = (1, 2, 2, 3)  
print(t.count(2))  # 输出: 2  

索引(index)
返回某元素首次出现的索引:

t = ("a", "b", "c")  
print(t.index("b"))  # 输出: 1  

元组与列表的转换

列表转元组
使用tuple()函数:

list1 = [1, 2, 3]  
tuple1 = tuple(list1)  # 结果为 (1, 2, 3)  

元组转列表
使用list()函数:

tuple1 = (4, 5)  
list1 = list(tuple1)  # 结果为 [4, 5]  

元组的应用场景

  1. 数据保护:防止意外修改数据。
  2. 字典键值:元组(若元素均为不可变类型)可作为字典的键。
  3. 函数返回值:多返回值时打包为元组返回。

示例

def get_coordinates():  
    return (3, 7)  

x, y = get_coordinates()  # 解包元组  

 

range对象

range()函数用于生成一个不可变的整数序列,通常用于循环中。

基本语法

  • range(stop)
  • range(start, stop[, step])

示例:

for i in range(5):  
    print(i)  # 输出:0, 1, 2, 3, 4 
for i in range(2, 6):  
    print(i)  # 输出:2, 3, 4, 5 
for i in range(0, 10, 2):  
    print(i)  # 输出:0, 2, 4, 6, 8  
 

 反向序列

步长为负数时生成递减序列:

for i in range(5, 0, -1):  
    print(i)  # 输出:5, 4, 3, 2, 1 

 转换列表

range()对象可转换为列表

numbers = list(range(3))  # 结果为 [0, 1, 2]  

注意

参数必须为整数,不支持浮点数

官方文档——range对象https://docs.python.org/zh-cn/3.12/library/stdtypes.html#ranges

映射类型

映射类型是键值对(key-value)的无序集合,通过键来访问值。

字典(dict)是最常见的映射类型,键必须是不可变类型(如字符串、数字或元组),值可以是任意类型。

字典支持快速查找、插入和删除操作。

字典创建

使用花括号{}dict()构造函数创建字典:

dict1 = {'name': 'Alice', 'age': 25}  # 直接创建
dict2 = dict(name='Bob', age=30)      # 使用dict()
dict3 = dict([('name', 'Charlie'), ('age', 35)])  # 从可迭代对象创建

基本操作

访问元素

value = dict1['name']  # 获取键'name'对应的值
value = dict1.get('name', 'default')  # 安全获取,键不存在时返回默认值

添加/修改元素

dict1['gender'] = 'female'  # 添加新键值对
dict1['age'] = 26           # 修改已有键的值

删除元素

del dict1['age']         # 删除指定键
value = dict1.pop('name')  # 删除并返回值
dict1.clear()            # 清空字典

常用方法

获取所有键或值

keys = dict1.keys()    # 获取所有键的视图
values = dict1.values()  # 获取所有值的视图
items = dict1.items()   # 获取所有键值对的视图

更新字典

dict1.update({'age': 27, 'city': 'New York'})  # 合并其他字典或键值对

 →官方文档——字典←https://docs.python.org/zh-cn/3.12/library/stdtypes.html#mapping-types-dict 

集合类型

Python 中的 setfrozenset 是用于存储无序、唯一元素的集合数据类型。set 是可变的,而 frozenset 是不可变的。两者的操作类似,但 set 支持增删操作,而 frozenset 不支持。


创建集合

使用 {}set() 创建 set,使用 frozenset() 创建 frozenset

s = {1, 2, 3}          # 创建 set
fs = frozenset([1, 2]) # 创建 frozenset


集合操作

以下操作适用于 setfrozenset,除非特别说明。

成员检测

使用 in 检查元素是否在集合中。

print(2 in s)  # True
集合长度

使用 len() 获取集合元素数量。

print(len(s))  # 3

仅适用于 set 的操作

frozenset 不可变,不支持以下操作。

添加元素

使用 add()update()

s.add(4)            # {1, 2, 3, 4}
s.update([5, 6])    # {1, 2, 3, 4, 5, 6}
删除元素

使用 remove()discard()pop()

s.remove(1)     # 移除 1,若不存在则报错
s.discard(10)   # 移除 10,若不存在不报错
s.pop()         # 随机移除并返回一个元素
清空集合

使用 clear()

s.clear()  # set()

注意

  • 集合存储唯一元素,重复添加同一元素无效。
  • setfrozenset 的元素必须是可哈希的类型(如数字、字符串、元组)。
  • 官方文档——set和frozensethttps://docs.python.org/zh-cn/3.12/library/stdtypes.html#set-types-set-frozenset

类型对比

序列类型通过索引访问元素,映射类型通过键访问值,集合类型通过成员测试操作。序列和映射类型可以包含重复元素,而集合类型自动去重。序列和集合类型可以是有序或无序的,映射类型通常是无序的。

# 类型对比示例
list_example = [1, 2, 2, 3]  # 允许重复
set_example = {1, 2, 2, 3}   # 自动去重
dict_example = {'a': 1, 'b': 2}  # 键唯一

序列通用操作

DAY3——PYTHON——复合类型之序列类型、映射类型和集合类型总结_第1张图片

可变序列的操作

 DAY3——PYTHON——复合类型之序列类型、映射类型和集合类型总结_第2张图片

图片摘自:内置类型 — Python 3.12.10 文档https://docs.python.org/zh-cn/3.12/library/stdtypes.html#sequence-types-list-tuple-range

你可能感兴趣的:(PYTHON学习,python,复合类型,可变序列)