【python】你知道什么是不可变集合吗?

Python中frozenset,秒变不可变集合,再也不用担心多线程了! 在Python中,frozenset是一种不可变的集合数据类型 ,意味着一旦创建,其内容就不能被修改。它继承了集合(set)的所有特性,如无序性、唯一性,但不具备添加或删除元素的能力。创建frozenset可以通过直接将一个可迭代对象传递给frozenset()构造函数来完成。 阅读详情

1.不可变集合

1.1 什么是不可变集合

是一个长度不可变,内容也无法修改的集合

1.2 使用场景

如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。

当集合对象被不可信的库调用时,不可变形式是安全的。

简单理解:

不想让别人修改集合中的内容
在这里插入图片描述

比如说:

  1. 斗地主的54张牌,是不能添加,不能删除,不能修改的

  2. 斗地主的打牌规则:单张,对子,三张,顺子等,也是不能修改的

  3. 用代码获取的操作系统硬件信息,也是不能被修改的

1.3 不可变集合分类

  • 不可变的list集合

  • 不可变的set集合

  • 不可变的map集合

1.4 不可变的list集合

public class ImmutableDemo1 {
    public static void main(String[] args) {
        /*
            创建不可变的List集合
            "张三", "李四", "王五", "赵六"
        */
​
        //一旦创建完毕之后,是无法进行修改的,在下面的代码中,只能进行查询操作
        List<String> list = List.of("张三", "李四", "王五", "赵六");
​
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));
​
        System.out.println("---------------------------");
​
        for (String s : list) {
            System.out.println(s);
        }
​
        System.out.println("---------------------------");
​
​
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
        System.out.println("---------------------------");
​
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("---------------------------");
​
        //list.remove("李四");
        //list.add("aaa");
        list.set(0,"aaa");
    }
}

1.5 不可变的Set集合

public class ImmutableDemo2 {
    public static void main(String[] args) {
        /*
           创建不可变的Set集合
           "张三", "李四", "王五", "赵六"
​
​
           细节:
                当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性
        */
​
        //一旦创建完毕之后,是无法进行修改的,在下面的代码中,只能进行查询操作
        Set<String> set = Set.of("张三", "张三", "李四", "王五", "赵六");
​
        for (String s : set) {
            System.out.println(s);
        }
​
        System.out.println("-----------------------");
​
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
​
        System.out.println("-----------------------");
        //set.remove("王五");
    }
}

1.6 不可变的Map集合

1.6.1:键值对个数小于等于10
public class ImmutableDemo3 {
    public static void main(String[] args) {
       /*
        创建Map的不可变集合
            细节1:
                键是不能重复的
            细节2:
                Map里面的of方法,参数是有上限的,最多只能传递20个参数,10个键值对
            细节3:
                如果我们要传递多个键值对对象,数量大于10个,在Map接口中还有一个方法
        */
​
        //一旦创建完毕之后,是无法进行修改的,在下面的代码中,只能进行查询操作
        Map<String, String> map = Map.of("张三", "南京", "张三", "北京", "王五", "上海",
                "赵六", "广州", "孙七", "深圳", "周八", "杭州",
                "吴九", "宁波", "郑十", "苏州", "刘一", "无锡",
                "陈二", "嘉兴");
​
        Set<String> keys = map.keySet();
        for (String key : keys) {
            String value = map.get(key);
            System.out.println(key + "=" + value);
        }
​
        System.out.println("--------------------------");
​
        Set<Map.Entry<String, String>> entries = map.entrySet();
        for (Map.Entry<String, String> entry : entries) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "=" + value);
        }
        System.out.println("--------------------------");
    }
}
1.6.2:键值对个数大于10
public class ImmutableDemo4 {
    public static void main(String[] args) {
​
        /*
            创建Map的不可变集合,键值对的数量超过10个
        */
​
        //1.创建一个普通的Map集合
        HashMap<String, String> hm = new HashMap<>();
        hm.put("张三", "南京");
        hm.put("李四", "北京");
        hm.put("王五", "上海");
        hm.put("赵六", "北京");
        hm.put("孙七", "深圳");
        hm.put("周八", "杭州");
        hm.put("吴九", "宁波");
        hm.put("郑十", "苏州");
        hm.put("刘一", "无锡");
        hm.put("陈二", "嘉兴");
        hm.put("aaa", "111");
​
        //2.利用上面的数据来获取一个不可变的集合
/*
        //获取到所有的键值对对象(Entry对象)
        Set<Map.Entry<String, String>> entries = hm.entrySet();
        //把entries变成一个数组
        Map.Entry[] arr1 = new Map.Entry[0];
        //toArray方法在底层会比较集合的长度跟数组的长度两者的大小
        //如果集合的长度 > 数组的长度 :数据在数组中放不下,此时会根据实际数据的个数,重新创建数组
        //如果集合的长度 <= 数组的长度:数据在数组中放的下,此时不会创建新的数组,而是直接用
        Map.Entry[] arr2 = entries.toArray(arr1);
        //不可变的map集合
        Map map = Map.ofEntries(arr2);
        map.put("bbb","222");*/
​
​
        //Map<Object, Object> map = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));
​
        Map<String, String> map = Map.copyOf(hm);
        map.put("bbb","222");
    }
}
Python元组(Tuple) vs 列表(List):何时使用不可变序列? 本文深入探讨了Python中元组(Tuple)和列表(List)的区别及其适用场景。元组是不可变序列,使用圆括号表示,适合存储不应修改的固定数据,如常量、字典键或函数返回的多个值,且性能优于列表。列表是可变序列,使用方括号表示,适合需要频繁增删改的动态数据集合,并提供丰富的内置方法。通过性能测试和实际应用场景分析,本文总结了选择元组或列表的最佳实践,建议在数据不需要修改时优先使用元组,而在需要动态操作数据时选择列表。 阅读详情

相关推荐

不可变集合的详细概述

是一个长度不可变,内容也无法修改的集合。

qq_69748833的博客 529

Java - 不可变集合

不可变集合的概念 不可变集合就是集合定义完成后不可以修改、添加、删除 集合的数据由创建时提供,整个生命周期中不可改变 不可变集合的好处 当对象被不可信的库调用时,不可变形式是安全的 不可变集合的创建方式 JDK 9 +创建不可变集合 List、Set、Map 接口中的 .of() 静态方法方法 (不是真正的不可变) List、Set、Map 接口中的 .copyOf() 静态方法方法 package immutable; import java.util.List; import jav

从零开始的博客 2258

保姆级教程:用SNAP处理哨兵一号数据,5步搞定城区范围提取(附江西晋城案例)

本文提供了一份详细的保姆级教程,介绍如何使用SNAP软件处理哨兵一号数据,通过5个关键步骤快速提取城区范围。以江西晋城为例,教程涵盖数据准备、预处理、核心处理流程、自动化搭建及成果分析,帮助用户轻松掌握SNAP操作技巧,适用于城市规划、环境监测等领域。

weixin_32535389的博客 453

Java不可变集合(超详解)

不可变集合,顾名思义,就是不可以被修改的集合。一旦该集合创建完毕,其长度和内容均不能改变(不能增加或者减少元素),只能查找集合内的元素。

jerryhao0216的博客 4692

PPT+视频 | 详解智能营销增益模型(uplift model)

分享营销增益模型的原理和常见的建模及评估方法,并以淘票票智能票补为例介绍uplift model技术的实践经验。

阿里文娱技术 8626

(王道考研计算机网络)第三章数据链路层-第一节:数据链路层功能概述

文章目录一:本章概述二:数据链路层基本概念三:数据链路层功能概述(1)为网络层提供服务(2)链路管理(3)组帧(4)流量控制(5)差错控制 本章是计算机网络中入门较难的一章,如果没有接触过相关内容,可能会止步于一些晦涩难懂的术语。本节内容希望大家可以用心看一看,对于大家入门是很有帮助的 一:本章概述 数据链路层位于物理层之上,主要作用就是提高物理层传输比特流的能力,使物理层可能出现差错的连接转变为逻辑上无差错的数据链路,同时向网络层提供服务。本章学习的主要就是数据链路层的功能和应用 数据链路层功能 封

快乐江湖的博客 2469

【0016】Python数据类型-不可变集合详解

在Python中,除了我们常见的可变集合(Set)外,还有一种不可变集合(Frozenset)。不可变集合是一种哈希不可变的集合类型,这意味着一旦创建,其元素就不能被添加、删除或修改。本文将详细介绍Python中的不可变集合,适合零基础小白学习。

一个结构化、系统化学习IT知识的优秀博客 1108

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 171

Python基础-集合与不可变集合

集合与不可变集合的关系和列表与元组之间的关系类似。 先总结一下集合 集合是一个无序的可变的序列。集合中的元素必须是可hash的,即不可变的数据类型。 空集合 a=set() 注意a={}创建的是一个空字典。 也可以用set()转化为集合 b=[1,2,3,4] a=set(b) a {1,2,3,4} 还可以用{}来创建一个集合 a={1,2,3,4,1}

keyboardwarrior的博客 1万+

127.手机防回滚机制(Anti-Rollback)详解|efuse熔丝原理与降级绕过方案

手机刷机与维修技术指南 本文针对电子工程师和维修人员,详细介绍了主流手机品牌(高通、联发科、苹果)的刷机原理与维修方法。内容包括三大平台的刷机协议差异、关键操作模式(Fastboot/DFU/EDL)、分区表修复等核心技术,并提供了完整的Python自动化刷机脚本。文章重点解决系统崩溃、基带丢失、分区损坏等常见故障,涵盖从环境搭建到具体操作的全流程指导,所有指令均经过实测验证。适用于专业维修场景下的跨品牌设备修复需求。

2601_95651806的博客 291

YOLOv8融合可变形注意力(DAT)实战教程:暴力涨点的科研级注意力机制优化方案

DAT的“可变形注意力”为目标检测的“精准特征捕捉”提供了全新思路,而YOLOv8的工程化优势让这种科研创新能快速落地到工业场景。希望这篇教程能帮你在“注意力机制优化+复杂场景检测”的痛点上找到突破口。如果你在实操中遇到“涨点不明显”的问题,不妨回到“DAT的采样点是否贴合目标形状”“注意力权重是否有效过滤背景”这些细节上找原因——科研的价值,就在于在细节打磨中推动技术进步。祝你在DAT与YOLOv8的结合探索中,既能做出有说服力的实验成果,又能沉淀出解决异形目标检测难题的实用经验。

know_F0727的博客 83

python 不可变集合

不可变集合 对应于元组(tuple)与列表(list)的关系,对于集合(set),Python提供了一种叫做不可变集合(frozen set)的数据结构。 使用frozenset来进行创建: In[1]: s = frozenset([1, 2, 3, 'a', 1]) s Out[1]: frozenset({1, 2, 3, 'a'}) 与集合不同的是,不可变集合一旦...

dudu3332的博客 559

Keras深度学习实战(32)——基于LSTM预测股价

股价预测是时间序列预测中最具挑战性的问题之一,研究股价预测问题具有重要的理论意义和应用价值。针对循环神经网络在股价预测中存在的长期依赖等缺点,本文引入了长短时记忆神经网络以提高股价预测的效果。同时,我们把有关公司的新闻标题的文本数据作为模型的输入变量时,发现预测效果更好,因此我们可以把有关公司的新闻标题的文本数据作为一个有效的输入变量。最后,通过利用 Keras 实现了以上两个股价预测模型,并进行了性能分析和对比。

盼小辉丶的博客 1万+

python中可变集合set和不可变集合frozenset的区别

序言 集合是不同元素的无序集合。与序列类型不同(如列表,字符串等),集合是没有切片操作的。 集合分为两种类型: set —— 可变集合。集合中的元素可以动态的增加或删除。 frozenset —— 不可变集合。集合中的元素不可改变。 注:对于 并集, 交集, 差集 等的返回值,与最左边的操作数具有相同的类型。例如:s &amp; t  取交集。s集合是一个set类型的集合,t集合是一个f...

九天小牛 8490

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python不可变集合

不可变集合 对应于元组(tuple)与列表(list)的关系,对于集合(set),Python提供了一种叫做不可变集合(frozen set)的数据结构。 使用 frozenset 来进行创建: 与集合不同的是,不可变集合一旦创建就不可以改变。 不可变集合的一个主要应用是用来作为字典的键,例如用一个字典来记录两个城市之间的距离: 由于集合不分顺序,所以不同顺序不会影响查阅结果: ...

Fabio的博客 2567

深度学习工具包 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")

python集合可以修改吗_python不可变集合中可以改变元素吗?

我们之前所学的集合可以往其中增加删除元素,使用上比较灵活,但我们也有一些时候需要固定集合的元素,不让集合出现变动,增加数据的稳定性,这时候就需要python中的frozenset不可变集合。那么如果我们试着去改变frozenset里的元素会出现什么情况呢?接下来再学习了简单不可变集合的概念后,我们会一起进行测试。frozenset是不可变的,其内容在被创建后不能再改变,不像set集合,可以增加删除...

weixin_39657575的博客 2366

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python可变集合和不可变集合_python不可变集合中能不能改变元素

python不可变集合中能不能改变元素发布时间:2020-12-08 14:49:55来源:亿速云阅读:96作者:小新这篇文章将为大家详细讲解有关python不可变集合中能不能改变元素,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。frozenset是不可变的,其内容在被创建后不能再改变,不像set集合,可以增加删除集合中的元素。因此可以被用作字典的键或其他集合的...

weixin_39981400的博客 875

Python基础:集合推导式与不可变集合frozenset

本文介绍了Python集合的两个高级特性:集合推导式和不可变集合frozenset。集合推导式语法类似列表推导式,但使用花括号且自动去重,支持if条件和元素变换。frozenset是不可变集合,可用于字典键或嵌入其他集合。文章通过实例演示了集合推导式在数据清洗、敏感词过滤等场景的应用,并与列表推导式进行了性能对比,强调集合推导式在去重场景下的效率优势。这些特性使集合成为处理去重和集合运算问题的强大工具。

输出倒逼输入,写作驱动成长。 7543

python创建不可变集合_python不可变集合

对应于元组(tuple)与列表(list)的关系,对于集合(set),Python提供了一种叫做不可变集合(frozen set)的数据结构。使用 frozenset 来进行创建:s = frozenset([1, 2, 3, 'a', 1])sfrozenset({1, 2, 3, 'a'})与集合不同的是,不可变集合一旦创建就不可以改变。不可变集合的一个主要应用是用来作为字典的键,例如用一个字...

weixin_39595008的博客 606

Python不可变集合frozenset

Python不可变集合frozenset

summerriver1的博客 826

python可变集合和不可变集合_不可变集合frozenset

* 作者:煮酒品茶 tea* 博客:http://www.zwhset.com http://cwtea.blog.51cto.com* 目前在京峰教育担任python讲师# 0、不可变集合frozenset> frozenset是不可变的集合, 简单说就是不能修改的set集合, 它和set集合类似,区别在于一个可变, 另一个不可变,其它的功能一样。 很像list和tuple的区别# 1、函...

weixin_39894778的博客 1206

集合与不可变集合

一、集合 集合是一种无序的序列。集合中的元素具有唯一性,即集合中不存在两个同样的元素。 1.集合的格式 通常用一对大括号“{}”来创建集合: s = {1,2,5} 也可以使用set()函数来生成: s = set([1,3,2,1]) print(s) #结果为:{1,3,2} 2.集合的运算 (1)交集 两个集合的交集可以用操作符" & "实...

weixin_34290631的博客 467

python创建不可变集合_Python不变集合(frozenset)

Python不变集合(frozenset)教程Python 不变集合 frozenset 的所有操作都类似于 Python 的集合,但不支持所有的集合修改的操作,Python 不变集合可以从所有的可迭代对象创建,比如不变集合(frozenset)定义详解语法s = frozenset([iterable])参数参数描述iterable支持迭代的数据,从该数据创建不变集合。s创建的不变集合。返回值返...

weixin_39591720的博客 827

python爬虫--【百度知道】自动答题

做的第一个python爬虫类项目,刚开始学,如有错误,指出无妨 百度知道自动答题 功能 访问百度知道,我们会看到有很多新的提问。 其实很多提问已经有人做了解释或者网上可以找到现成的答案。 因此,一方面,满足那些提问题的人的需要,另一方面,自己使用python练练手。 项目的主要功能就是:对于百度知道里面的新问题,程序会在网页上去搜索,寻找最佳答案。如果有,则回答他;如果没有,那就跳过。 实...

一条二哈 6802
上一篇: 【python】爬虫使用代理不会被限制的原因
下一篇: Python里面的self?那是什么啊?
大模型产品经理
博客等级 码龄3年 1万+粉丝 1120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值