集合运算

python之集合,函数,装饰器

偶尔善良 提交于 2020-03-20 18:24:39
本节主要内容如下:   1. set集合   2. 函数      -- 自定义函数      -- 内置函数   3. 装饰器 一. set 集合:       一个无序且不重复的序列。       tuple算是list和str的杂合(杂交的都有自己的优势,上一节的末后已经显示了),那么set则可以堪称是list和dict的杂合.       set拥有类似dict的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键.       set也有继承了一点list的特点:如可以原处修改(事实上是一种类别的set可以原处修改,另外一种不可以).   1.2 集合的创建:    1 s1 = {11,22,11,33,22} #第一种创建方法 2 print(s1) 3 4 {33, 11, 22} 1 s2 = set([11,22,11,33,22]) #第二种创建方法 2 print(s2) 3 4 {33, 11, 22} 1 s3 = set() #创建一个空的集合   例子: 1 s4 = set('chooses') 2 print(s4) 3 print(type(s4)) 4 5 {'s', 'c', 'e', 'o', 'h'} 6 <class 'set'> 注:

JAVA集合框架01

风流意气都作罢 提交于 2020-03-20 08:34:36
List 接口存储一组不唯一(可以重复),有序(插入顺序)的对象 01. ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高 通过看ArrayList的源码得知: /** * Constructs an empty list with an initial capacity of ten. 构造一个初始容量为十的空列表 */ public ArrayList() { this(10); 调用带参的构造 参数为10 } ArrayList创建的时候,数组初始化长度为10! List list=new ArrayList(-1); 这句话会运行错误! 看源码得知! /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list * @exception IllegalArgumentException if the specified initial capacity * is negative */ public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) /

集合框架系列 Map(十):HashMap

柔情痞子 提交于 2020-03-18 18:17:13
目录 1 概述 2 原理 3 源码分析  3.1 构造方法   3.1.1 构造方法分析   3.1.2 初始容量、负载因子、阈值  3.2 查找  3.3 遍历  3.4 插入   3.4.1 插入逻辑分析   3.4.2 扩容机制   3.4.3 链表树化、红黑树链化与拆分  3.5 删除  3.6 其他细节  3.7 总结 1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap 。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。另外,需要注意的是,HashMap 是非线程安全类,在多线程环境下可能会存在问题。 在本篇文章中,我将会对 HashMap 中常用方法、重要属性及相关方法进行分析。需要说明的是,HashMap 源码中可分析的点很多,本文很难一一覆盖,请见谅。 2. 原理 上一节说到 HashMap 底层是基于散列算法实现,散列算法分为散列再探测和拉链式。HashMap 则使用了拉链式的散列算法,并在 JDK 1.8 中引入了红黑树优化过长的链表。数据结构示意图如下: 对于拉链式的散列算法,其数据结构是由数组和链表(或树形结构)组成

python内置函数

╄→гoц情女王★ 提交于 2020-03-18 14:43:21
1、逻辑判断 all(iterable) -> bool 1、集合中的元素都为真时,返回true;2、特别的,集合为空,返回值为true any(iterable) -> bool 1、集合中有1个元素为真,就返回true;2、特别的,集合为空,返回false 2、数学运算类 函数名 函数功能 备注 abs(number) -> number 求绝对值 1、参数可以是整形,也可以是复数;2、参数为复数,则返回复数的模 divmod(x, y) -> (div, mod) 求商和余数 注意:整形和浮点型都可以 complex(real[, imag]) -> complex number 创建一个复数 complex还有1个方法conjugate:(3-4j).conjugate() == 3+4j 来源: https://www.cnblogs.com/Will-guo/p/6411826.html

Java 集合

你。 提交于 2020-03-17 01:16:34
1、说说List,Set,Map三者的区别? List:有序、元素可重复 Set:元素不能重复 Map: 一个元素即一个键值对,key唯一标识一个键值对,key不能重复,元素可以重复,key、value均可以是任意类型。 2、Arraylist 与 LinkedList 区别? 1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是都不保证线程安全; 2. 底层数据结构: Arraylist 底层使用数组; LinkedList 底层使用双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!) 3. 插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,插入和删除元素的时间复杂度受元素位置的影响。 比如:执行 add(E e) 方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是O(1)。但是如果要在指定位置 i 插入和删除元素的话( add(int index, E element) )时间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。 ② LinkedList 采用链表存储,所以对于 add(E e) 方法的插入

C语言数据结构-绪论

瘦欲@ 提交于 2020-03-16 06:29:37
目录 1.数据结构的起源 2.基本概念和术语 3.逻辑结构与物理结构 4.抽象数据类型 @(数据结构绪论) 1.数据结构的起源 ==数据结构==是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和操作等相关问题的学科。 1968年,美国的高德纳(Donald E.Knuth)的《计算机程序设计艺术》第一卷《基本语法》中,较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系。同年(1968年),数据结构作为一门独立的课程,在计算机科学的学位课程中开始出现。 程序设计 = 数据结构 + 算法 2.基本概念和术语 ==数据==:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据不仅仅包括整型、实型等 数值类型 ,还包括字符及声音、图像、视频等 非数值类型 它是计算机程序加工的“原料”。例如,一个利用数值分析方法解代数方程的程序,其处理对象是整数和实数。一个编译程序或文字处理程序的处理对象是字符串。 数据,其实就是 符号 ,并且具备两个前提 可以输入到计算机中。 能被计算机程序处理。 数值类型可以进行数值计算。 字符类型需要进行非数值的处理。而声音、图像、视频等是通过编码的手段变成字符数据来处理的。 ==数据元素==:是组成数据的、有一定意义的 基本单位 ,在计算机中通常作为整体处理。也被称为 记录 。

Java中的IO与NIO

故事扮演 提交于 2020-03-15 18:09:41
前文开了 高并发 学习的头,文末说了将会选择NIO、RPC相关资料做进一步学习,所以本文开始学习NIO知识。 IO 知识回顾 在学习NIO前,有必要先回顾一下IO的一些知识。 IO 中的流 Java程序通过流(Stream)来完成输入输出。流是生产或者消费信息的抽象,流通过Java的输入输出与物理设备连接,尽管与之相连的物理设备不尽相同,但是所有的流的行为都是一样的,所以相同的输入输出类的功能和方法适用于所有的外部设备。这意味着一个输入流可以抽象多种类型的输入,比如文件、键盘或者网络套接字等,同样的,一个输出流也可以输出到控制台、文件或者相连的网络。 流的分类 从功能上可以将流分为输入流和输出流。输入和输出是相对于程序来说的,程序在使用数据时所扮演的角色有两个:一个是源,一个是目的。若程序是数据的源,对外输出数据,我们就称这个数据流相对于程序来说是输出流,若程序是数据的目的地,我们就称这个数据流相对于程序来说是输入流。 从结构上可以将流分为字节流和字符流,字节流以字节为处理单位,字符流以字符为处理单位。 从角色上可以将流分为节点流和过滤流。从特定的地方读写的流叫做节点流,如磁盘或者一块内存区域,而过滤流则以节点流作为输入或者输出,过滤流是使用一个已经存在的输入流或者输出流连接来创建的。 字节流的输入流和输出流的基础是InputStream和OutputStream

[.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

旧街凉风 提交于 2020-03-15 08:33:08
[.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些 , 本节参考了网上朋友所写的例子,为的是让更多小伙伴学习,提高,加薪,如有版权问题,请邮件我,我第一时间处理。 语句:是程序中的小指令,本节主要以流程控制语句为主要内容。 流程控制语句中最常用的三个是 选择语句(即条件语句)、循环语句和异常处理语句 流程控制语句分类: 类别       关键字                       选择语句       if 、 else 、 switch 、 case 循环语句       do 、 for 、 foreach 、 in 、 while 跳转语句       break 、 continue 、 default 、 goto 、 return 异常处理语句     throw 、 try-catch 、 try-finally 检查和未检查语句   checked 、 unchecked 非保护和固定语句   unsafe 、 fixed 锁定语句       lock 1. 条件语句 1.1 if - else if (expression){}else{}, 其中 expression 是一个布尔类型, true 则执行第一区块, false 则执行 else 部分

Java 基础知识的一些易错点

泪湿孤枕 提交于 2020-03-14 15:25:06
1、正确使用 equals() Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 String str = null; if (str.equals("abcd")) { ... } else { ... } 如果变量str为null,会抛出空指针异常,如果没有catch来捕获处理(我们一般不会在equals()上加try),程序直接就终止运行了。 abcd".equals(str) 把常量写在前面,“abcd”!=null,结果为false,不会抛出异常。 但2个都是变量呢? 最推荐下面的方式:使用工具类Objects(JDK7自带的) Objects.equals(str,"abcd") 就算2个都是变量,2个都是null,都不会抛出异常。如果2个都是null,null==null,返回true。 Objects的部分源码如下: public static boolean equals(Object a, Object b) { // 如果a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。 return (a == b) || (a != null && a.equals(b)); } ||、&&都是断路的,如果||前面为true,就不会执行后面的判断;如果&&前面为false,就不会执行后面的判断。

149.集合论

女生的网名这么多〃 提交于 2020-03-14 11:08:04
集合论是研究集合一般性质的数学分支,它的创始人是康托尔 现代数学中,每个对象(如数,函数等)本质上都是集合,都可以用某种集合来定义,数学的各个分支,本质上都是在研究某种对象集合的性质。集合论已成为现代全部数学的理论基础。 集合论的特点是研究对象的广泛性,它总结出由各种对象构成的集合的共同性质,并用统一的方法来处理。因此,集合论被广泛地应用于各种科学和技术领域。 由于集合论的语言适合于描述和研究离散对象及其关系,所以它也是计算机科学与工程的理论基础,而且在程序设计,数据结构,形式语言,关系数据库,操作系统等都有重要应用。 1.集合 1.1定义 集合:具有某种特殊性质的客体的聚合。 集合用大写的字母标记, 例如:A、B、C…… 元素:属于任何集合的任何客体。 元素用小写字母标记, 例如:a、b、c、…… 注意: ①元素与集合间的关系: 若 a 是集合 S 中的元素,则可写成 a∈ S ;  若b不是集 S 合中的元素,则可写成 b∈ S 。 ②集合 S 的 基数(势) :S中的元素个数。记为 |S| . ③有限集合:集合的基数(元素)是有限的。 无限集合:集合的基数(元素)是无限的。 常用集合符: I m (m≥1) 有限个正数的集合{1,2,3……m} N m (m≥0) 有限个自然数的集合{0,1,2……m} 以上是有限集合,下面是无限集合: N 自然数集合{0,1,2……} I+