Python字典,核心编程必备技能,建议收藏!

【肝帝一周总结:全网最全最细】十万字python教程,学不会找我!教到你会为止!!内容超多,建议收藏慢慢看! 文章目录前言一定要看python入门python缩进Python注释Python 变量1. 定义理解2. 变量名命名3. 分配多个值4. 输出变量5. 全局变量 前言一定要看 python能干什么?有什么用?好处在哪?不要我讲了,这不是我在博客该讲的,言简意赅就是:通俗易懂,上手快,实用强。我会根据自己个人理解以及国外官网翻译为中文对大家进行讲解。完整源码我也会在最下面带上地址。内容过多,我不会全部演示,你完全可以复制粘贴到自己的pycharm上运行即可。 不管是国内的菜鸟教程还是我在这里的翻译,至少你跟 阅读详情

Python字典,核心编程必备技能,建议收藏!

前言

大家好,我是[你的名字]。在日常Python开发中,字典(dict)绝对是我用得最频繁的数据结构,没有之一。无论是处理JSON数据、缓存配置,还是做计数器、去重,字典都扮演着至关重要的角色。

今天这篇文章,我想把自己对字典的理解系统性地整理出来,从基础用法到底层原理,再到一些容易被忽视的“坑”,希望能帮你彻底掌握Python字典。

话不多说,我们直接开始。

一、什么是字典?

字典是Python内置的一种可变、无序的容器模型,以“键值对”(key: value)的形式存储数据。你可以把它想象成一个现实中的电话本:通过人名(键)就能快速找到电话号码(值),而不需要从头翻到尾。

1.1 字典的创建方式

python

# 方式一:花括号(最常用)
user = {"name": "小明", "age": 18}

# 方式二:dict()构造函数
user2 = dict(name="小红", age=20)

# 方式三:通过列表生成
user3 = dict([("name", "小刚"), ("age", 22)])

# 空字典
empty_dict = {}

1.2 字典的关键约束

使用字典时,有两个核心规则必须牢记:

约束说明
键必须唯一如果同一个键被赋值两次,后面的值会覆盖前面的值
键必须不可变键只能是字符串、数字、元组等不可变类型;列表、字典、集合不能作为键

python

# 合法的键
d = {
    1: "数字键",
    "name": "字符串键",
    (1, 2): "元组键"   # 元组不可变,OK
}

# 非法的键(会报错 TypeError)
d = {[1, 2]: "列表键"}  # 列表可变,不能作为键

二、字典的核心操作(增删改查)

这是日常开发中使用频率最高的部分,务必熟练掌握。

2.1 查(访问元素)

python

user = {"name": "小明", "age": 18}

# 方法1:直接通过key访问(key不存在时会报错 KeyError)
print(user["name"])   # 输出: 小明
# print(user["sex"])  # 报错!

# 方法2:使用get()方法(推荐,安全)
print(user.get("sex"))          # 输出: None
print(user.get("sex", "未知"))  # 输出: 未知(可指定默认值)

# 方法3:setdefault()(如果key不存在,则设置默认值并返回)
age = user.setdefault("age", 0)    # 存在,返回18
sex = user.setdefault("sex", "男") # 不存在,添加 sex="男",返回"男"
print(user)  # {'name': '小明', 'age': 18, 'sex': '男'}

2.2 增 / 改(添加或修改元素)

python

user = {"name": "小明"}

# 直接赋值:key存在则修改,不存在则新增
user["age"] = 18      # 新增
user["name"] = "大明" # 修改

print(user)  # {'name': '大明', 'age': 18}

# 批量更新:使用update()合并另一个字典
user.update({"city": "北京", "age": 19})
print(user)  # {'name': '大明', 'age': 19, 'city': '北京'}

2.3 删(删除元素)

python

user = {"name": "小明", "age": 18, "city": "北京"}

# pop(key):删除指定key,并返回对应的值
age = user.pop("age")
print(age)          # 18
print(user)         # {'name': '小明', 'city': '北京'}

# popitem():删除并返回最后一个键值对(Python3.7+ 有序)
item = user.popitem()
print(item)         # ('city', '北京')
print(user)         # {'name': '小明'}

# del:删除指定key
del user["name"]
print(user)         # {}

# clear():清空字典
user.clear()
print(user)         # {}

三、字典的遍历技巧

python

user = {"name": "小明", "age": 18, "city": "北京"}

# 1. 遍历所有key(默认)
for key in user:
    print(key, user[key])

# 2. 遍历所有key(更明确)
for key in user.keys():
    print(key)

# 3. 遍历所有value
for value in user.values():
    print(value)

# 4. 遍历所有键值对(最常用,效率高)
for key, value in user.items():
    print(f"{key}: {value}")

四、字典与列表的性能对比(重要!)

很多初学者在处理数据时习惯用列表,但在数据量较大时,列表的查找效率远低于字典。

场景列表(List)字典(Dict)
查找元素O(n) — 需要逐个遍历O(1) — 直接通过哈希计算位置
插入元素O(1) 或 O(n)(插入中间位置)O(1)
删除元素O(n)O(1)
适用场景有序数据、栈、队列快速查找、映射关系、缓存

实际案例:

假设有一个包含100万条数据的列表,要查找某个元素是否存在,最坏情况下需要遍历100万次。而使用字典,只需要一次哈希计算,速度是天壤之别。

python

import time

# 列表查找
lst = list(range(1000000))
start = time.time()
print(999999 in lst)  # True
print("列表查找耗时:", time.time() - start)

# 字典查找(key就是数字本身)
d = {i: i for i in range(1000000)}
start = time.time()
print(999999 in d)    # True
print("字典查找耗时:", time.time() - start)

运行结果会让你直观感受到字典的速度优势。

五、进阶技巧(实用干货)

5.1 字典推导式

类似列表推导式,可以快速生成字典。

python

# 生成平方数字典
squares = {x: x**2 for x in range(5)}
print(squares)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 过滤:只保留偶数
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)  # {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

5.2 defaultdict —— 避免KeyError的利器

当你需要统计频次或分组时,defaultdict 可以省去判断key是否存在的麻烦。

python

from collections import defaultdict

# 普通方式:需要判断
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
count = {}
for word in words:
    if word in count:
        count[word] += 1
    else:
        count[word] = 1

# 使用defaultdict:自动初始化
count = defaultdict(int)  # 默认值为0
for word in words:
    count[word] += 1

print(dict(count))  # {'apple': 3, 'banana': 2, 'orange': 1}

5.3 Counter —— 计数专用

如果只是做计数,collections.Counter 更加方便。

python

from collections import Counter

words = ["apple", "banana", "apple", "orange", "banana", "apple"]
count = Counter(words)
print(count)          # Counter({'apple': 3, 'banana': 2, 'orange': 1})
print(count["apple"]) # 3

5.4 合并字典的几种方式

python

d1 = {"a": 1, "b": 2}
d2 = {"b": 3, "c": 4}

# Python 3.9+ 使用 | 操作符
d3 = d1 | d2
print(d3)  # {'a': 1, 'b': 3, 'c': 4}

# 使用 ** 解包(通用)
d4 = {**d1, **d2}
print(d4)  # {'a': 1, 'b': 3, 'c': 4}

# 使用 update()(会修改原字典)
d1.update(d2)
print(d1)  # {'a': 1, 'b': 3, 'c': 4}

六、底层原理:哈希表与散列冲突

字典之所以这么快,底层依靠的是哈希表(Hash Table)。

工作流程:

  1. 当你存储一个键值对时,Python会计算键的哈希值(通过 hash() 函数)。

  2. 根据哈希值计算出该键值对在内存数组中的存储位置(索引)。

  3. 当你要查找一个键时,同样计算哈希值,然后直接跳转到对应位置读取数据,一步到位。

关于哈希冲突:

不同的键有可能计算出相同的哈希值(或映射到同一个位置),这称为“哈希冲突”。Python采用开放寻址法来解决冲突——如果发现目标位置已被占用,就会继续向下探测,直到找到一个空位。

为什么键必须是不可变类型?

因为如果键是可变的(比如列表),其内容一旦变化,哈希值就会改变,导致无法再找到之前存储的数据。所以Python强制要求键必须是不可变类型。

七、常见“坑”与避坑指南

坑1:遍历时修改字典

python

d = {"a": 1, "b": 2, "c": 3}

# 错误:在遍历过程中删除元素会报错
for key in d:
    if key == "b":
        del d[key]  # RuntimeError: dictionary changed size during iteration

# 正确方式:先转为列表再遍历
for key in list(d.keys()):
    if key == "b":
        del d[key]
print(d)  # {'a': 1, 'c': 3}

坑2:用列表作为键

python

# 错误示例
d = {[1, 2]: "value"}  # TypeError: unhashable type: 'list'

# 如果需要用序列作为键,请用元组
d = {(1, 2): "value"}   # OK

坑3:复制字典时引用同一个对象

python

d1 = {"a": [1, 2]}
d2 = d1          # 浅复制,d2和d1指向同一个对象
d2["a"].append(3)
print(d1)        # {'a': [1, 2, 3]}  —— 原字典被修改了!

# 正确方式:深拷贝
import copy
d1 = {"a": [1, 2]}
d2 = copy.deepcopy(d1)
d2["a"].append(3)
print(d1)        # {'a': [1, 2]}  —— 原字典不变

八、总结

知识点要点
核心特性键值对存储、键唯一且不可变、无序(Python3.7+ 插入有序)
访问方式优先使用 get() 避免KeyError
遍历items() 遍历键值对效率最高
性能查找/插入/删除都是O(1),远优于列表
底层基于哈希表实现,键必须可哈希
推荐库defaultdict、Counter 简化代码

字典是Python开发中不可或缺的利器,掌握它能让你的代码更加优雅、高效。希望这篇文章能帮你系统地梳理字典的知识点,也欢迎在评论区交流你的使用心得!


如果觉得这篇文章对你有帮助,记得点赞、收藏、关注三连支持一下~ 你的鼓励是我持续输出的动力!


本文为原创,首发于优快云,转载请注明出处。

史上最全的 python 基础知识,没有比这再全面的了,建议收藏 文章目录Python基础知识1、列表2、字典3、集合4、元组5、推导式6、函数7、lambda表达式8 、异常9、文件操作9.1 文件操作9.2 文件夹操作(OS包)10、公共操作10.1 运算符10.2 公共方法10.2.1 len10.2.2 del10.2.3 max和min10.2.4 range10.2.5 enumerater10.3 容器类型转换**tuple****list**set Python基础知识 用type ( 变量 ) 可以查看变量的数据类型 1、列表 ###定义和值相关 #定义 阅读详情

相关推荐

自动化测试工具playwright中文文档-------1.编写测试

Playwright 测试非常简单,它们执行操作,并断言状态是否符合预期。在执行任何操作之前,无需等待任何内容:Playwright 在执行每个操作之前会自动等待一系列可操作性检查通过。此外,在执行检查时也不需要处理竞态条件——Playwright 的断言设计方式能够描述最终需要满足的期望。就这样!这些设计选择允许 Playwright 用户完全忘记他们测试中的不稳定超时和竞态检查。您将学习如何编写第一个测试如何执行操作如何使用断言测试如何在隔离环境中运行如何使用测试钩子。

2301_76646967的博客 2510

05-Python—列表、元祖、字典、集合操作大全:建议收藏

数据结构基本上就是——它们是可以处理一些 数据 的 结构 。或者说,它们是用来存储一组相关数据的。 在Python中有四种内建的数据结构——列表、元组和字典,集合。我们将会学习如何使用它们,以及它们如何使编程变得简单 一、列表list 是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行, 而在Python中,你在每个项目之间...

bigzql的博客 7万+

Arduino平台软硬件原理及使用——Arduino Uno板卡的使用

Arduino Uno板卡的基本使用

洪博hopes的博客 4176

python核心知识总结,建议收藏

python核心知识点总结,建议收藏

Java癫疯的博客 3081

大厂嵌入式面试常考八股文及算法

1.指向已被释放或无效的内存地址的指针是野指针。互斥锁是一种用于线程同步的机制,用于确保同一时间只有一个线程访问共享资源。多态是面向对象编程中的一种特性,它允许以一种统一的方式处理不同类型的对象,通过相同的接口可以表现出不同的行为。大小端(Endian)指的是在计算机存储和处理多字节数据时,字节的存储顺序。大端序(Big Endian):高位字节存储在低地址,低位字节存储在高地址。类似于将数字的高位放在左边,低位放在右边的表示方式。例如整数值0x12345678在内存中按照大端序排列为。

谢谢大家的关注 6160

暑期实习前端面试笔试总结汇总

腾讯2020暑期实习——前端视频面试(1)回顾 腾讯2020暑期实习——前端视频面试(2)回顾 腾讯2020暑期实习——前端视频面试(3)回顾 腾讯2020暑期实习——前端视频面试(4)回顾 蘑菇街2020暑期实习——前端视频面试回顾 二、笔试 奇安信前端实习笔试总结 vivo笔试(2020年3月8日) ...

明媚 3067

编程干货|10个超好用的python代码,短小且精悍,建议收藏!

当今python编程语言的潮流已经成为不可阻挡的趋势,python以其较高的可读性和简洁性备受程序员的喜爱。而python编程中的一些小的技巧,运用的恰当,会让你的程序事半功倍。 以下的10个小的程序段,看似非常的简单,但是却非常的有技巧性,并且对个人的编程能力是一个很好的检验,大家应该在日常的编程中多多使用,多多练习。 1.代码执行消耗时间 利用time()函数,在核心程序开始前记住当前时间点,然后在程序结束后计算当前时间点和核心程序开始前的时间差,可以帮助我们计算程序执行所消耗的时间。 imp

spfoo的博客 2076

告别Overleaf!本地LaTeX环境配置:VSCode+TeXLive完全指南(Windows/Mac双平台)

本文详细介绍了如何在Windows和Mac平台上配置本地LaTeX环境,使用VSCode和TeXLive打造高效的专业写作工作流。从TeXLive安装到VSCode插件配置,再到高级技巧与性能优化,帮助用户摆脱Overleaf限制,实现更快速、更私密的学术写作体验。

3c4x5z6v7b的博客 952

13个Python必备的知识,建议收藏!

第一时间了解技术前沿热点Python在编程语言流行指数PYPL中已多次排名第一。由于其代码可读性和更简单的语法,它被认为是有史以来最简单的语言。NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或 AI/机器学习的初学者,那么Python是开始你的旅程的正确选择。本次,小F会带着大家探索一些Python编程的基础知识,虽然简单但都很有用。目录数据类型变量列表集合字典注释基本功能条件语句循环语句函数。

chengxuyuanyy的博客 941

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1573

【芯片设计- RTL 编译与仿真 1.2 -- Visualizer 常用使用命令】

打开波形后,如果想要看到所有信号的数据,可以点击下图中红框中的按钮,因为默认verdi 默认并不是显示所用信号。如果想统计某一个信号中有多少笔数据时,可以使用 Expression->Edege Count 功能。如下图所示,如果没有打开前导0的功能时,当某一笔数据位0时,只会显示1个0。如果需要将波形的数据导出到文本文件时,可以按照下面步骤进行。打开前导0功能之后,会根据数据位宽来显示对应0的个数。

CodingCos的博客 2049

13 个 Python 必备的知识,建议收藏!

作者 | 法纳斯特来源 | 法纳斯特Python在编程语言流行指数PYPL中已多次排名第一。由于其代码可读性和更简单的语法,它被认为是有史以来最简单的语言。NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或 AI/机器学习的初学者,那么Python是开始你的旅程的正确选择。本次,会带着大家探索一些...

AI科技大本营 905

CATIA二次开发一一一装配体与零件之间的坐标转换

输入参数:Product(产品实例对象)、iPointToTransfor(待转换坐标点CATMathPoint)核心逻辑:通过产品对象的绝对位置变换矩阵,计算逆向变换实现坐标系转换。输出参数:Point(转换后的局部坐标点CATMathPoint)

工业软件开发 1133

110道Python面试题(真题),建议收藏!

允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。当使用del删除变量指向的对象时,如果对象的引用计数不为1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除。

python03011的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

13个Python必备的知识,建议收藏

Python在编程语言流行指数PYPL中已多次排名第一。由于其代码可读性和更简单的语法,它被认为是有史以来最简单的语言。NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或 AI/机器学习的初学者,那么Python是开始你的旅程的正确选择。 本次,带着大家探索一些Python编程的基础知识,虽然简单但都很有用。

SixStar_FL的博客 1068

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

13个 Python 必备的知识,建议收藏

Python在编程语言流行指数PYPL中已多次排名第一。由于其代码可读性和更简单的语法,它被认为是有史以来最简单的语言。NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或AI/机器学习的初学者,那么Python是开始你的旅程的正确选择。本次,小F会带着大家探索一些Python编程的基础知识,虽然简单但都很有用。...

m0_59485658的博客 1001

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【建议收藏】13个Python必备的知识

NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或 AI/机器学习的初学者,那么Python是开始你的旅程的正确选择!

m0_75067840的博客 1375

【Python系列】Python字典非空判断

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1万+

13个Python语言入门必备的知识,建议收藏!

Python在编程语言流行指数PYPL中已多次排名第一。由于其代码可读性和更简单的语法,它被认为是有史以来最简单的语言。NumPy、Pandas、TensorFlow等各种AI和机器学习库的丰富性,是Python核心需求之一。如果你是数据科学家或 AI/机器学习的初学者,那么Python是开始你的旅程的正确选择。本次,带着大家探索一些Python编程的基础知识,虽然简单但都很有用。

lyy2017175913的博客 148

【Python系列】字典判断空

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 3万+

收藏!100条经典实用的Python实例,代码清晰拿来即用!

在使用列表的时候,有时会需要取最后一个元素,有下面几种方式可以实现。

python03012的博客 6166

【Python】05-列表、元祖、字典、集合操作大全:建议收藏

数据结构基本上就是——它们是可以处理一些 数据 的 结构 。或者说,它们是用来存储一组相关数据的。 在Python中有四种内建的数据结构——列表、元组和字典,集合。我们将会学习如何使用它们,以及它们如何使编程变得简单 一、列表list 是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行, 而在Python中,你在每个项目之间...

姜太小白的博客 552

20 条非常实用的 Python 代码,建议收藏!

本文分享了20个实用的Python代码片段,涵盖字典操作、列表处理、字符串处理、文件检查、异常处理等常见场景。包括合并字典、链式比较、查找高频元素、正则匹配、内存占用统计等技巧,还介绍了列表推导式、filter筛选、集合去重等高效编程方法。这些代码简洁实用,能帮助开发者提升日常编码效率,适合作为Python开发的必备参考。

王同学的博客 479

【Python系列】字典遍历

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 3万+
上一篇: Python中列表的操作(超详细版)
下一篇: Python 数据结构知识汇总
python666Lc
博客等级 码龄126天 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值