专业的JAVA编程教程与资源

网站首页 > java教程 正文

python必须掌握的20个核心函数—list()、dict()和set()

temp10 2025-07-28 00:00:52 java教程 2 ℃ 0 评论

以下是Python中list()、dict()和set()三大核心容器函数的对比详解,包含创建方式、特性、应用场景及常见用法:


1. 基本概念对比

函数

python必须掌握的20个核心函数—list()、dict()和set()

数据结构

元素特性

可变性

空对象创建

元素要求

list()

列表

有序、可重复

可变

list() 或 []

无特殊要求

dict()

字典

键值对(键唯一)

可变

dict() 或 {}

键必须可哈希

set()

集合

无序、唯一

可变

set()

元素必须可哈希

2. 创建方式对比

2.1 list()

# 空列表
lst1 = list()      # []
lst2 = []          # [] (更推荐)

# 从可迭代对象创建
lst3 = list("abc")           # ['a', 'b', 'c']
lst4 = list(range(3))        # [0, 1, 2]
lst5 = list({'a':1, 'b':2})  # ['a', 'b'] (取字典键)

2.2 dict()

# 空字典
d1 = dict()      # {}
d2 = {}          # {} (更推荐)

# 从键值对创建
d3 = dict(a=1, b=2)               # {'a':1, 'b':2}
d4 = dict([('a',1), ('b',2)])     # {'a':1, 'b':2}
d5 = dict(zip(['a','b'], [1,2]))  # {'a':1, 'b':2}

2.3 set()

# 空集合
s1 = set()   # set() (不能使用{})

# 从可迭代对象创建
s2 = set("hello")         # {'h', 'e', 'l', 'o'} (去重)
s3 = set([1,2,2,3])       # {1, 2, 3}
s4 = set({'a':1, 'b':2})  # {'a', 'b'} (取字典键)

3. 核心特性对比

3.1 去重能力

  • set():自动去重,适合处理唯一性数据。
set([1,2,2,3])  # {1, 2, 3}
  • list()/dict():保留所有元素,需手动去重

3.2 成员检测效率

  • set():O(1)时间复杂度,极快
999999 in set(range(1000000))  # 立即返回

list():O(n)时间复杂度,数据量大时慢。

999999 in list(range(1000000))  # 需遍历
  • dict():键查询为O(1),与集合相同。

3.3 数据运算

  • set():支持并集(|)、交集(&)、差集(-)等数学运算。
{1,2} | {2,3}  # {1, 2, 3}
  • list()/dict():无内置集合运算,需手动实现。

4. 实际应用场景

4.1list()场景

  • 有序数据存储:如时间序列、队列。
tasks = list()
tasks.append("task1")

需要索引访问

lst = ['a', 'b', 'c']
print(lst[1])  # 'b'

4.2dict()场景

  • 键值映射:如配置管理、数据库记录。
user = dict(name="Alice", age=25)

快速查找表

word_count = dict()
for word in words:
    word_count[word] = word_count.get(word, 0) + 1

4.3set()场景

  • 去重
unique_words = set(words)

关系测试

valid_tags = {"python", "java"}
user_tags = {"python", "c++"}
matched = user_tags & valid_tags  # {"python"}

5. 性能注意事项

操作

list()

dict()

set()

插入元素

O(1)

O(1)

O(1)

查找元素

O(n)

O(1)

O(1)

内存占用

较小

较大

较大

适合数据量

中小型

大型

大型

6. 互相转换技巧

# list -> set (去重)
lst = [1,2,2,3]
unique = set(lst)          # {1,2,3}

# dict -> list (取键/值)
d = {'a':1, 'b':2}
keys = list(d)             # ['a', 'b']
values = list(d.values())  # [1, 2]

# set -> list
s = {1,2,3}
lst = list(s)              # [1,2,3] (顺序不保证)

7. 总结

  • 选择依据
    • 需要有序且可重复 → list()
    • 需要键值映射 → dict()
    • 需要去重或集合运算 → set()
  • 通用原则
    • 频繁成员测试优先用set()或dict()
    • 数据量小时差异不大,代码可读性更重要
    • 注意可变对象的哈希限制(dict键和set元素必须可哈希)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表