特征对比
下面是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}) |