数学集合

Python容器之集合

十年热恋 提交于 2019-12-18 12:47:10
一、集合的定义 集合是由不重复元素组成的无序的集。 它的基本用法包括成员检测和消除重复元素。 集合对象也支持像 联合,交集,差集,对称差分等数学运算。 二、集合的创建 1、创建一个空集合 >> > _set = set ( ) >> > _set set ( ) 2、创建一个非空集合 从下面代码可以体现集合会消除重复元素. >> > basket = { 'apple' , 'orange' , 'apple' , 'pear' , 'orange' , 'banana' } >> > basket { 'orange' , 'apple' , 'pear' , 'banana' } 三、集合的用法 四、深入了解集合 集合也支持类似 “列表推导式”. 例如 >> > a = { x for x in 'abracadabra' if x not in 'abc' } >> > a { 'r' , 'd' } 来源: CSDN 作者: MichaelZhu 链接: https://blog.csdn.net/a5685263/article/details/103594439

20191210——Java集合、泛型和枚举

∥☆過路亽.° 提交于 2019-12-10 17:23:09
在 Java 中数组的长度是不可修改的。然而在实际应用的很多情况下,无法确定数据数量。这些数据不适合使用数组来保存,这时候就需要使用集合。 Java 的集合就像一个容器,用来存储 Java 类的对象。有些容器内部存放的东西在容器内部是不可操作的,像水瓶里的水,除了将其装入和倒出之外,就不能再进行别的操作了,但是很容易装入和倒出;而有些容器内部存放的东西在容器内部是可以操作的,例如,衣柜里面摆放的衣服,不仅可以将衣服存放到衣柜中,还可以将衣服有序地摆放,以便在使用时快速查找,但是却不容易取出。Java 的集合类比这些容器功能还多,其中有些是方便放入和取出的,有些是方便查找的。在集合中经常会用到泛型来使集合更加安全。 java集合类的概念 在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文一79,数学一80。这种数据看上去像两个数组,但这两个数组的元素之间有一定的关联关系。 为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下

Java基础系列7——集合系列(1)框架概述

依然范特西╮ 提交于 2019-12-09 14:36:16
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。 集合框架概述 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections) Java集合工具包框架图(如下): 下面我们来剖析一下这张结构图: 集合框架主要由两大块组成:Collection和Map Collection: Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。Collection包含了List和Set两大分支。 (1)、List:List是有序队列,每一个元素都有它的索引,索引值从0开始,List的实现类有ArrayList、LinkedList、Vector、Stack (2)、Set:Set中的元素时不允许重复的,Set的实现类有HashSet、TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

集合操作工具类CollectionUtils

て烟熏妆下的殇ゞ 提交于 2019-12-05 15:23:23
使用CollectionUtils中四个方法之一执行集合操作.这四种分别是union(),intersection();disjunction(); subtract(); 下列例子就是演示了如何使用上述四个方法处理两个Collection; 例子:使用:CollectionUtils union(),intersection();disjunction(); subtract(); 注: 这些方法都是数学的集合算法 Java代码 import java.util.*; String[] arrayA = new String[] { "1", "2", "3", "3", "4", "5" }; String[] arrayB = new String[] { "3", "4", "4", "5", "6", "7" }; List a = Arrays.asList( arrayA ); List b = Arrays.asList( arrayB ); Collection union = CollectionUtils.union( a, b ); //并集 Collection intersection = CollectionUtils.intersection( a, b ); //交集 Collection disjunction = CollectionUtils

论逻辑(一)

落爺英雄遲暮 提交于 2019-12-05 04:23:56
逻辑 逻辑是什么?为什么我们需要逻辑?逻辑在我们的生活中扮演怎么样的角色?逻辑的重要性是什么? 声明:以下文章仅仅代表笔者观点,如有不同观点,欢迎大家讨论! 逻辑是什么?    逻 辑是给定条件与得出结论之间的过程。对于一件事情来说,有起因,有结果,当然也会有过程。这个过程把起因变为了结果。逻辑就好比这个过程。当然“逻辑”与 “过程”之间是有区别的,逻辑是一种推演、一种推导、根据给定的条件,得出一种结论,可以说逻辑是一思考,它有别于过程,过程客观存在,是观察到的事实, 可以说过程是一种正确的逻辑。既然有正确的逻辑,那么也会有错误的逻辑,错误的逻辑也是逻辑只不过他是错的,错误的逻辑会自相矛盾,也就悖论。举个最简单 的例子。比如我现在说:"我只说谎言。",那么请你判定我是否在说谎?荒妙而又神奇对不对?    对于逻辑的思考自古就有:    "三段论":由亚里士多德提出.   三段论推理是演绎推理中的一种简单推理判断。他包括:一个包含大项和中项的命题(大前提)、一个包含小项和中项的命题(小前提)以及一个包含小项和大 项的命题(结论)三部分。 对于三段论有一个简单的列举,大前提:人都会死,小前提:亚里士多德是人,结论:亚里士多德会死。多么简短而又美妙的论证。如果我给出以下条件,大前提: 猫都是四条腿,小前提:狗有四条腿,那么结论会是什么?狗是猫?很明显这与我们的认知不和,这就是“三段论

论逻辑(一)

旧时模样 提交于 2019-12-05 03:58:41
逻辑 逻辑是什么?为什么我们需要逻辑?逻辑在我们的生活中扮演怎么样的角色?逻辑的重要性是什么? 声明:以下文章仅仅代表笔者观点,如有不同观点,欢迎大家讨论! 逻辑是什么?    逻辑是给定条件与得出结论之间的过程。对于一件事情来说,有起因,有结果,当然也会有过程。这个过程把起因变为了结果。逻辑就好比这个过程。当然“逻辑”与“过程”之间是有区别的,逻辑是一种推演、一种推导、根据给定的条件,得出一种结论,可以说逻辑是一思考,它有别于过程,过程客观存在,是观察到的事实,可以说过程是一种正确的逻辑。既然有正确的逻辑,那么也会有错误的逻辑,错误的逻辑也是逻辑只不过他是错的,错误的逻辑会自相矛盾,也就悖论。举个最简单的例子。比如我现在说:"我只说谎言。",那么请你判定我是否在说谎?荒妙而又神奇对不对?    对于逻辑的思考自古就有:    "三段论":由亚里士多德提出.   三段论推理是演绎推理中的一种简单推理判断。他包括:一个包含大项和中项的命题(大前提)、一个包含小项和中项的命题(小前提)以及一个包含小项和大项的命题(结论)三部分。 对于三段论有一个简单的列举,大前提:人都会死,小前提:亚里士多德是人,结论:亚里士多德会死。多么简短而又美妙的论证。如果我给出以下条件,大前提:猫都是四条腿,小前提:狗有四条腿,那么结论会是什么?狗是猫?很明显这与我们的认知不和,这就是“三段论”的缺陷。   

小球与盒子(组合数学基本模板)

烂漫一生 提交于 2019-12-04 06:36:11
小球与盒子 在离散数学里面,组合数是一个重点。下面就对常见的几个小球盒子模型进行总结 参考了chengni的 这篇文章 ,在此表示感谢。 注意 : 以下未说明,均默认球数为n,盒子数为m。 \(C_{n}^{m}=\binom{n}{m}\) ,两者是等价的。 从不同变为相同需要 乘以 阶乘而不是除 一、球相同,盒子不同,不可以有空盒 很经典的隔板法模型, 相同 的物品划分为几个 不同 的集合。设球为n,盒子为m,方案数为 \[ ans= \binom{n-1}{m-1} \] 二、球相同,盒子不同,允许空盒 这和上面唯一的区别就是 允许空盒 。不妨假设每个空盒已经被我们放了一个球,那么问题就变成了上面的情况,。所以我们可以看做自己有 n+m 个小球,然后我们在排列完之后在每一组都删去一个小球,这样就能枚举出有空盒的情况了。n个球分成m个集合等价于n+m个球分成m个非空集合。 于是答案为 \[ ans= \binom{n+m-1}{m-1} \] (在这里把盒子想成集合会好想一些) 三、球不同,盒子不同,允许空盒 对于每一个球,你都可以放到1~m的任意位置,所以方案数为 \[ ans= m^n \] 四、球不同,盒子相同,不可以有空盒 对于这个问题有个东西叫做 第二类斯特林数 。 在数学上,斯特林数有两类,本文只介绍第二类。 第二类斯特林数( \(S2[n][m]\) )的含义:n

重温离散系列②之良序原理

血红的双手。 提交于 2019-12-03 12:04:55
参考教材: 计算机科学中的数学 我的另一篇博文: 重温离散系列①之什么是证明 良序原理 Definition:非空非负的整数集合必有最小元素。 是的,你没有看错,良序原理就是这么显而易见。但是,良序原理却是离散数学中最重要的原理之一。 良序证明 良序证明是运用良序原理的一种证明方法。良序证明和反证法是挂钩的,如果用到良序证明,就一定会用到反证法。 ​ 我们先看一道例题: ​ 例:证明对任意非负整数n,1+2+3+.....+n=n(n+1)/2 通过这道例题,我想你能基本感受到良序定理的作用。我们接着往下看: 良序证明的模板 使用良序定理证明"对所有n \(\in\) N,p(n)成立。"(良序证明一般用于证明诸如此类问题 使用反证法,定义集合C为P为真的反例集合 根据良序原理,一定存在一个最小元素n \(\in\) C 得出矛盾----通常是P(n)为真或C中存在一个比n更小的元素。这部分取决于具体的证明任务。 得出结论,C一定是空集,即不存在反例。 良序集合 如果一个集合的任意非空子集都有一个最小元素,我们称这个集合是良序的。 (这个不是很重要,我们就不详细展开 一些习题 个人认为要想深入理解和使用良序证明,是需要多从习题中总结提炼的,以下是一些良序证明的习题: 一些习题 总结 良序原理是“基本的思维定理”,而良序证明是基于良序原理的一种数学证明方法。一般用于证明诸如"

Python数据结构(三)set使用和原理

自闭症网瘾萝莉.ら 提交于 2019-12-03 02:22:19
1. set是什么? 数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素(set elements)。Python把这个概念引入到它的集合类型对象里。集合对象是一组无序排列的可哈希的值。集合关系测试和union、intersection等操作符在Python里也同样如我们所预想地那样工作。 2. set特点 集合中的元素有三个特征: 确定性:集合中的元素必须是确定的; 互异性:集合中的元素互不相同,如:集合A={1,a},则a不能等于1); 无序性:集合中的元素没有先后之分,如:{3,4,5}和{3,5,4}算作同一个集合。 python中集合(set)是一个 无序不重复 元素的集。基本功能包括关系测试和消除重复元素,还可以计算交集、差集、并集等。它与列表(list)的行为类似,区别在于set不能包含重复的值,而且set元素是无序的。 在python中可以用大括号 {} 创建集合。注意:如果要创建或初始化一个空集合,你必须用 set() 而不是 {} 。因为后者 {} 作为创建一个空的字典,以后我们会介绍字典这种数据结构。 3. python集合种类 python集合有两种不同的类型: 可变集合(set):可变集合(set),可以添加和删除元素, 不可变集合(frozenset):不可变集合(frozenset)一旦创建就不允许更改。

Set使用基础以及该在什么地方使用?

帅比萌擦擦* 提交于 2019-12-03 02:21:09
这次我主要说的是关于Set[集合]、Map[键值对]。 1、Set【集合】 Java中的Set正好和数学上直观得集合[Set]的概念是相同。Set最大的特性就是不允许在其中存放的元素是重复的。根据这个特点,我们就可以使用Set这个接口来实现像商品种类的存储需求。Set可以被用来过滤在其他容器中存放的元素,从而得到一个没有包含重复新的集合。 在这里主要说的是HashSet与TreeHash的基础使用。 1)、HashSet:无序且是不重复的 import java.util.HashSet; import java.util.Iterator; public class HashSetText { public static void main(String[] args) { //创建集合,泛型可以是一个自定义对象,也可以是Java内置对象 HashSet<String> ha = new HashSet<String>(); //添加数据 ha.add("BBB"); ha.add("DDD"); ha.add("AAA"); ha.add("CCC"); //添加与之前的重复,则不添加进去 ha.add("AAA"); //取出方式一:迭代器 //将集合中的数据放入迭代器中遍历 Iterator<String> iter=ha.iterator(); /