📜  List vs Set (1)

📅  最后修改于: 2023-12-03 15:17:24.562000             🧑  作者: Mango

List vs Set

Python中,List和Set都是常用的数据结构。虽然它们看起来很相似,但它们的功用和特性是有所不同的。本文将对这两种数据结构进行介绍和对比。

List

List 是Python中最常用的数据类型之一。它是一个可变的序列,使用中括号[]表示。List里的元素可以是任何类型,包括另一个List。

my_list = [1, 2, 3, 'a', 'b', 'c', [4, 5, 6]]
特性
  1. 序列中的元素是有序的。
  2. 列表可以包含重复的元素。
  3. List可以通过索引和切片进行操作。索引从0开始,负数索引从最后一个元素开始。
  4. List可以动态修改,可以增加、删除、删除元素。
# 索引和切片
print(my_list[0])         # 1
print(my_list[1:4])       # [2, 3, 'a']
print(my_list[-1])        # [4, 5, 6]

# 增加元素
my_list.append('d')
print(my_list)            # [1, 2, 3, 'a', 'b', 'c', [4, 5, 6], 'd']

# 插入元素
my_list.insert(2, 'x')
print(my_list)            # [1, 2, 'x', 3, 'a', 'b', 'c', [4, 5, 6], 'd']

# 删除元素
del my_list[3]
print(my_list)            # [1, 2, 'x', 'a', 'b', 'c', [4, 5, 6], 'd']

# 修改元素
my_list[2] = 'y'
print(my_list)            # [1, 2, 'y', 'a', 'b', 'c', [4, 5, 6], 'd']
Set

Set 是Python中的一种集合类型,使用大括号{}或函数set()表示。Set可以用来去重,判断元素是否存在于集合中。

my_set = {1, 2, 3, 'a', 'b', 'c'}
特性
  1. 集合中的元素是无序的。
  2. Set不支持重复元素,相同元素只会出现一次。
  3. Set中的元素必须是不可变类型,不能包含List等可变类型的元素。
# 基本操作
print(my_set)             # {1, 2, 3, 'b', 'a', 'c'}
print(len(my_set))        # 6
print('a' in my_set)      # True

# 添加元素
my_set.add('d')
print(my_set)             # {1, 2, 3, 'b', 'a', 'c', 'd'}

# 删除元素
my_set.remove('b')
print(my_set)             # {1, 2, 3, 'a', 'c', 'd'}
对比

ListSet 他们各自适用于不同的场合,因此,在使用中,需要根据实际情况来选择。一般而言,当数据的顺序和位置比较重要的时候,应该选择使用 List,而当需要快速的判定数据是否存在、去重时,应该使用 Set

以下是对比表格:

| | List | Set | | --- | --- | --- | | 顺序 | 有序 | 无序 | | 去重 | 需要手动 | 自动去重 | | 支持重复元素 | 支持 | 不支持 | | 支持索引和切片 | 支持 | 不支持 | | 是否可变 | 可变 | 可变 | | 内存占用 | 较大 | 较小 | | 查询速度 | 较慢 | 较快 | | 添加/删除元素 | 需要修改整个列表或开辟新的空间 | 可以很快添加或删除元素 |

总结

在实际使用中,ListSet 都是常用的数据结构,它们都有自己的优点和适用场景。选择哪种数据结构,应该根据具体的需求和场景来判断,综合考虑它们的特性、性能、内存占用等方面的因素。