特征对比
下面是Python中列表、元组、集合和字典的特征对比表格:
特征 | 列表 (List) | 元组 (Tuple) | 集合 (Set) | 字典 (Dictionary) |
---|
定义符号 | [ ] | ( ) | { } | { } |
可变性 | 可变 | 不可变 | 可变 | 可变 |
有序性 | 有序 | 有序 | 无序 | 无序 |
元素访问 | 通过索引访问,索引从0开始 | 通过索引访问,索引从0开始 | 不支持索引访问 | 通过键访问 |
元素类型 | 可以包含任意类型的元素 | 可以包含任意类型的元素 | 可以包含任意类型的元素 | 键必须是不可变类型,值可以是任意类型 |
声明示例 | my_list = [1, 'apple', True] | my_tuple = (1, 'apple', True) | my_set = {1, 'apple', True} | my_dict = {'name': 'Alice', 'age': 30} |
可变操作 | 添加、删除、修改元素 | 不支持添加、删除、修改元素 | 添加、删除元素 | 添加、删除、修改键值对 |
说明:
- 可变性:列表、集合和字典是可变的,可以通过增删改操作来修改其内容;元组是不可变的,一旦创建后不能被修改。
- 有序性:列表和元组是有序的,元素按照插入顺序排列;集合和字典是无序的,元素没有固定顺序。
- 元素访问:列表和元组可以通过索引访问元素;集合不支持索引访问,只能通过迭代或特定方法访问元素;字典通过键来访问对应的值。
- 元素类型:列表、元组、集合和字典都可以包含任意类型的元素;字典中的键必须是不可变类型,而值可以是任意类型。
- 声明示例:各种数据结构的声明方式和示例。
- 可变操作:列表可以进行添加、删除、修改等操作;元组不能进行任何修改操作;集合可以进行添加和删除元素的操作;字典可以进行添加、删除和修改。
常用方法
列表 (List)
方法 | 描述 | 参数说明 | 使用示例 |
---|
append(x) | 在列表末尾添加元素 x 。 | x :要添加的元素 | my_list.append(10) |
extend(iterable) | 将可迭代对象 iterable 的元素添加到列表末尾。 | iterable :一个可迭代对象,如列表、元组等 | my_list.extend([20, 30]) |
insert(i, x) | 在索引 i 处插入元素 x 。 | i :要插入的索引位置; x :要插入的元素 | my_list.insert(1, 'apple') |
remove(x) | 移除列表中第一个值为 x 的元素。 | x :要移除的元素 | my_list.remove('apple') |
pop([i]) | 移除并返回索引为 i 处的元素。如果未指定索引,默认移除并返回最后一个元素。 | i :可选的索引位置 | my_list.pop() 或 my_list.pop(0) |
clear() | 移除列表中的所有元素。 | 无参数 | my_list.clear() |
index(x) | 返回第一个值为 x 的元素的索引。 | x :要查找的元素 | my_list.index('apple') |
count(x) | 返回值为 x 的元素在列表中出现的次数。 | x :要计数的元素 | my_list.count('apple') |
sort(key=None, reverse=False) | 对列表进行排序。 | key :排序的规则函数; reverse :是否逆序排序 | my_list.sort(reverse=True) |
reverse() | 反转列表中的元素。 | 无参数 | my_list.reverse() |
copy() | 返回列表的浅拷贝。 | 无参数 | new_list = my_list.copy() |
元组 (Tuple)
元组是不可变的,因此没有修改元素的方法。
方法 | 描述 | 参数说明 | 使用示例 |
---|
count(x) | 返回值为 x 的元素在元组中出现的次数。 | x :要计数的元素 | my_tuple.count('apple') |
index(x) | 返回第一个值为 x 的元素的索引。 | x :要查找的元素 | my_tuple.index('apple') |
集合 (Set)
方法 | 描述 | 参数说明 | 使用示例 |
---|
add(x) | 向集合中添加元素 x 。 | x :要添加的元素 | my_set.add(10) |
update(iterable) | 将可迭代对象 iterable 的元素添加到集合中。 | iterable :一个可迭代对象,如列表、元组等 | my_set.update([20, 30]) |
remove(x) | 移除集合中的元素 x ,如果不存在会抛出 KeyError。 | x :要移除的元素 | my_set.remove('apple') |
discard(x) | 移除集合中的元素 x ,如果不存在不会抛出异常。 | x :要移除的元素 | my_set.discard('apple') |
pop() | 随机移除并返回集合中的一个元素。 | 无参数 | my_set.pop() |
clear() | 移除集合中的所有元素。 | 无参数 | my_set.clear() |
union(*others) | 返回一个新集合,包含所有集合和可迭代对象 others 中的元素。 | others :一个或多个集合或可迭代对象 | new_set = my_set.union(other_set) |
intersection(*others) | 返回一个新集合,包含所有集合和可迭代对象 others 中共同的元素。 | others :一个或多个集合或可迭代对象 | new_set = my_set.intersection(other_set) |
difference(*others) | 返回一个新集合,包含所有在当前集合中但不在可迭代对象 others 中的元素。 | others :一个或多个集合或可迭代对象 | new_set = my_set.difference(other_set) |
symmetric_difference(other) | 返回一个新集合,包含所有在当前集合或 other 中,但不同时在两者中的元素。 | other :另一个集合或可迭代对象 | new_set = my_set.symmetric_difference(other_set) |
字典 (Dictionary)
方法 | 描述 | 参数说明 | 使用示例 |
---|
clear() | 移除字典中的所有元素。 | 无参数 | my_dict.clear() |
copy() | 返回字典的浅拷贝。 | 无参数 | new_dict = my_dict.copy() |
fromkeys(keys, value=None) | 创建一个新字典,使用 keys 中的元素作为键,value 作为值(默认为 None )。 | keys :作为键的可迭代对象; value :作为值的默认值 | new_dict = dict.fromkeys(['name', 'age'], 'unknown') |
get(key, default=None) | 返回键 key 对应的值,如果键不存在则返回 default 。 | key :要获取值的键; default :键不存在时返回的默认值 | value = my_dict.get('name', 'Unknown') |
items() | 返回字典的键值对视图。 | 无参数 | items_view = my_dict.items() |
keys() | 返回字典的键视图。 | 无参数 | keys_view = my_dict.keys() |
values() | 返回字典的值视图。 | 无参数 | values_view = my_dict.values() |
pop(key, default=None) | 移除并返回键为 key 的元素,如果键不存在则返回 default 。 | key :要移除的键; default :键不存在时返回的默认值 | value = my_dict.pop('name', 'Unknown') |
popitem() | 移除并返回任意一个键值对元组。 | 无参数 | key_value_pair = my_dict.popitem() |
setdefault(key, default=None) | 返回键 key 对应的值,如果键不存在则将 default 设为该键的值并返回。 | key :要获取值的键; default :键不存在时设置的默认值 | value = my_dict.setdefault('name', 'Unknown') |
update([other]) | 更新字典,将另一个字典或可迭代对象 other 的键值对添加到当前字典中。 | other :一个字典或可迭代对象 | my_dict.update({'name': 'Alice', 'age': 30}) |