python必须掌握的20个核心函数—list()、dict()和set()
off999 2025-08-05 20:27 14 浏览 0 评论
以下是Python中list()、dict()和set()三大核心容器函数的对比详解,包含创建方式、特性、应用场景及常见用法:
1. 基本概念对比
函数 | 数据结构 | 元素特性 | 可变性 | 空对象创建 | 元素要求 |
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元素必须可哈希)
相关推荐
- 龙建股份:工程项目中标_龙建股份有限公司招聘网
-
404NotFoundnginx/1.6.1【公告简述】2016年9月8日公告,公司于2016年9月6日收到苏丹共和国(简称“北苏丹”)喀土穆州基础设施与运输部公路、桥梁和排水公司出具的中标通知书...
- 福田汽车:获得政府补助_福田 补贴
-
404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,自2016年8月17日至今,公司共收到产业发展补助、支持资金等与收益相关的政府补助4笔,共计5429.08万元(不含...
- 翰宇药业:获得发明专利_翰宇药业创新产业
-
404NotFoundnginx/1.6.1【公告简述】2016年9月2日公告,申请的一项发明专利获得中华人民共和国国家知识产权局颁发的发明专利证书,公司于2016年9月1日取得了该专利证书,该专...
- 川金诺:取得发明专利证书_川金诺(300505)
-
404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,近日,公司申请的一项发明专利获得国家知识产权局颁发的发明专利证书:一种提高和稳定湿法磷酸中和脱氟浓度方法。本发明是稀...
- 使用WTM框架创建博客系统后台并在云服务器发布
-
阅读导航关于lqclass.com博客后台前后端部署2.1已部署访问链接2.2nginx部署2.2.1后台后端发布2.2.2后台前端发布2.2.3云服务器部署下次分享1.关于lqcl...
- Nginx的location匹配规则,90%的人都没完全搞懂,一张图让你秒懂
-
为什么你的Nginx配置总是不生效?改了Nginx配置无数次,reload命令执行了几十遍,浏览器访问时却依然返回404?运维工程师小张上周就遇到了这个问题:明明配置了location/static...
- 全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)
-
Hello,大家好!近期工作中有涉及到Dify私有化离线部署,特别是针对于一些国产设备。因此特别整理了该教程,实测有效!有需要的小伙伴可以参考下!本文主要针对Dify1.7.2最新版本+国产操作系...
- 如何使用 Certbot 为域名配置永久免费的 HTTPS 证书
-
本文手把手教你如何在Linux上使用Certbot配置HTTPS,包括安装Certbot、修改Nginx配置、设置server_name、申请证书及证书续期。文章内容C一.安装...
- docker run 中 --name 参数介绍_docker run -itd --name
-
在Docker中,--name是dockerrun命令的一个重要参数,用于为新创建的容器指定一个唯一的自定义名称。以下是详细介绍和使用场景:一、--name的功能与语法作用:为容器分配一个...
- 403 Forbidden:无权限访问请求的资源如何处理
-
403Forbidden错误表示客户端(如浏览器或应用)已成功连接服务器,但服务器拒绝了该请求。这通常是由于用户或请求没有足够的权限访问目标资源。以下是常见的可能原因和解决方法:1.常见原因1....
- 使用docker compose实现最简单的容器伸缩、健康检查和负载均衡
-
跟K8S的自动伸缩配置类似,仅使用dockercompose也可以实现低配版的autoscale哟!本文非常的接地气,从头一步步开始,连带Dockerfile制作,容器健康检查,Nginx负载均衡...
- Nginx反向代理和正向代理详解(4大核心区别)
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构的必备中间件,本篇重点详解Nginx代理@mikechen文章来源:mikechen.cc1.服务对象不同服务对象不同,这...
- docker真的好难用啊,为什么说它移植性好啊?
-
刚刚接触docker,真的好麻烦啊,不明白为什么要选择docker,我都搞了两天还在搭环境,又告诉我Windows版本过低不适配docker,转而在Ubuntu里装docker,然后MySQL、php...
- Nginx动静分离技术详解(原理+配置+案例)
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构的必备技能,下面我详解Nginx动静分离技术@mikechen文章来源:mikechen.ccNginx动静分离动静分离:是...
- zabbix搭建+排错+批量监控_zabbix批量添加监控项
-
Zabbix软件的概念Zabbix是一款开源的、免费的监控软件、项目,主要是7x24小时去监控网络设备、操作系统、应用程序、带宽等资源,一旦发现异常和故障能够给SA管理员发送告警信息。Zabbix软件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)