集合运算

Java集合类--HashMap

烂漫一生 提交于 2019-12-25 14:07:36
一、HashMap基本源码实现 1、HashMap基本结构 HashMap继承AbstractMap抽象类,AbstractMap实现Map接口。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 362498820763181265L; .... } public abstract class AbstractMap<K,V> implements Map<K,V> { protected AbstractMap() { } ... } 二、HashMap的基本数据结构 jdk1.8之前,HashMap是由“数组+链表”的结构组成,jdk1.8之后,HashMap得到很大的改善;数据结构也发生了改变:“数组+链表+红黑树”;当链表节点大于8时,会转换为红黑树;否则仍然以链表结构。 头节点指的是table表上索引位置的节点,也就是链表的头节点 根节点(root节点)指的是红黑树最上面的那个节点,也就是没有父节点的节点 红黑树的根节点不一定是索引位置的头节点 转为红黑树节点后,链表的结构还存在,通过next属性维持

Python大一上总结

自作多情 提交于 2019-12-25 01:10:15
大一菜鸡Python总结 初次接触Python的一些入门知识 字符串及数据类型等 Python程序控制结构 想要写出一个比较好的程序控制结构,画流程图是非常重要的。想必在高中大家都有所借出流程图吧。以下是 流程图的7个基本元素 运用好基本元素就可以画出一个这样的流程图啦。 分支结构 程序由三种基本结构组成:顺序结构、分支结构、循环结构,这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成。 顺序结构 是程序按照线性顺序依次执行的一种运行方式,其中语句块S1和语句块S2表示一个或一组顺序执行的语句 2.分支结构 是程序根据条件判断结果而选择不同向前执行路径的一种运行方式,包括单分支结构和二分支结构。由二分支结构会组合形成多分支结构 3.循环结构 是程序根据条件判断结果向后反复执行的一种运行方式,根据循环体触发条件不同,包括条件循环和遍历循环结构 Python分支结构 共有单分支结构、二分支结构、多分支结构,其中分支结构还可以加入条件判断及组合 单分支结构 if <条件> : <语句块> 2.二分支结构 if <条件> : <语句块1> else : <语句块2> 3.多分支结构 f <条件1> : <语句块1> elif <条件2> : <语句块2> …… else : <语句块N> 条件判断及组合 用于条件组合的三个保留字 Python循环结构

善于使用列表推导、集合推导与字典推导 #P003#

若如初见. 提交于 2019-12-24 21:47:05
推导式是一个可以从现有数据序列构建另一个新的数据序列的结构体。Python共提供了三种推导式,在Python 2和 Python 3中都支持: 列表(list)推导式 字典(dict)推导式 集合(set)推导式 其中,最常用的是列表推导(list comprehension,又称列表解析式)。在这篇文章中,将用列表推导作为例子对Python的推导式进行系统性的介绍,然后再简单介绍字典推导与集合推导,之后还会介绍推导式与Python内置函数集成的例子,最后,会给出一些比较实用的推导式,用以巩固练习。 1 列表推导的含义与语法 列表推导式提供了一种简明扼要的方法来创建列表。列表推导的语法是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for语句或者if语句。 列表推导中的“表达式”可以是任意的,也就是说,可以在创建新的列表时,顺便进行一些运算操作。运算操作的结果,将会构成新的列表进行返回。 列表推导的形式化定义如下: variable = [expr for iter_item in iterable if cond_expr] 列表推导对快速生成列表非常有用,尤其适合遍历一个列表,并进行简单的计算,然后产生一个新的列表。例如,要获取0~9的平方的列表,初级Python工程师通常会这样做: squared = [] for x in range(10):

05 基本数据类型及内置方法

眉间皱痕 提交于 2019-12-24 07:45:45
[TOC] 一 引子 ​ 数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型) ,单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作,为了提升我们的开发效率, python针对这些常用的操作,为每一种数据类型内置了一系列方法。本章的主题就是带大家详细了解下它们,以及每种数据类型的详细定义、类型转换。 插图:恶搞图01 二 数字类型int与float ##2.1 定义 # 1、定义: # 1.1 整型int的定义 age=10 # 本质age = int(10) # 1.2 浮点型float的定义 salary=3000.3 # 本质salary=float(3000.3) # 注意:名字+括号的意思就是调用某个功能,比如 # print(...)调用打印功能 # int(...)调用创建整型数据的功能 # float(...)调用创建浮点型数据的功能 ##2.2 类型转换 # 1、数据类型转换 # 1.1 int可以将由纯整数构成的字符串直接转换成整型,若包含其他任意非整数符号,则会报错 >>> s = '123' >>> res = int(s) >>> res,type(res) (123, <class 'int'>) >>> int('12.3') #

Python 3 基本数据类型

≯℡__Kan透↙ 提交于 2019-12-23 16:04:16
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3 个): List(列表)、Dictionary(字典)、Set(集合)。 # 多个变量赋值 """Python允许你同时为多个变量赋值""" a = b = c = 1 # 以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量都指向同一个内存地址 #为多个对象创建多个变量 a, b, c = 1, 2, "runoob" 一、Number(数字) Python3 支持 int、float、bool、complex(复数) 。 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 像大多数语言一样,数值类型的赋值和计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。 a, b, c, d = 20, 5.5, True, 4+3j print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'>

7-4列表/元组/字典/集合的内置方法

巧了我就是萌 提交于 2019-12-23 12:40:53
一.列表 1.1 元素统计(count) l = [1,2,3,4,5,6,7] res = l.count(3) print(res) # 输出结果是1 View Code 1.2清除(clear) l = [1,2,3,4,5,6,7] res = l.clear() print(l) 1.3反向输出列表 l = [1,2,3,4,5,6,7] l.reverse() print(l) # [7, 6, 5, 4, 3, 2, 1] View Code 1.4将列表内元素排序(sort) l2 = [1, 342, 45, 23, 4, 435, 34, 324, 234] l2.sort() print(l2) # [1, 4, 23, 34, 45, 234, 324, 342, 435] View Code ps:默认为升序输出,也可以通过修改默认的排序规则(降序) eg: l2 = [1, 342, 45, 23, 4, 435, 34, 324, 234] l2.sort(reverse=True) print(l2) # [435, 342, 324, 234, 45, 34, 23, 4, 1] View Code 1.5队列(先进先出) l1 = [] l1.append('first') # 先进 l1.append('second') l1.append(

Redis数据类型之Set

て烟熏妆下的殇ゞ 提交于 2019-12-23 05:17:49
一、Redis五种数据类型 Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2的32次方-1 (4294967295, 每个集合可存储40多亿个成员)。 类似于JAVA中的 Hashtable集合 redis的集合对象set的底层存储结构特别神奇,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。 intset内部其实是一个数组(int8_t coentents[]数组),而且存储数据的时候是有序的,因为在查找数据的时候是通过二分查找来实现的。 一、Set结构 1.Set常用操作 命令 解释 SADD key member [member…] 往集合key中存入元素,元素存在则忽略,若key不存在则新建 SREM key member [member…] 从集合key中删除元素 SMEMBERS key 获取集合key中所有元素 SCARD key 获取集合key中元素的个数 SISMEMBER key member 获取member元素是否存在于集合key中 SRANDMEMBER key

Python学习之路

爷,独闯天下 提交于 2019-12-23 02:23:17
Python学习之路 一、Python基础语法 Python关键字(保留字) False if break assert from lambda try True elif continue class global is with None else as except import not yield and del return finally in pass or def while for nonlocal raise 注释 Python中 单行注释用 # 开头 多行注释可用多个#或者用 ’ ’ ’ 和” ” ” 数字(Number)类型 Python中数字有四种类型: 整数(int)、布尔值(bool)、浮点数(float) 和 复数(complex) int(整数):通常被称为整数,是正或负整数,不带小数点 bool(布尔):True 和 False(通常情况下,True = 1,False = 0) float(浮点数):如1.66等 complex(复数):如2+2j、1.1+2.2j等 Print输出 print默认输出是换行的,如果要实现不换行需要在变量末尾加上end="" import模块 模块有三种----内置模块、开源模块(公开的第三方模块)、自定义模块 import引入math库 import math from-import<函数名> import

redis 五种数据类型

对着背影说爱祢 提交于 2019-12-22 15:22:56
Redis有以下五种数据类型: String、Hash(类似于javaBean)、List(类似于LinkedList)、Set(类似于HashSet)、有序的Set集合 1、key的命名 key名不要过长,否则影响使用效率; ->因为他的key搜索规则是由短到长开始搜索 2、乱码问题 字符串在redis中是二进制安全的 二进制安全和数据安全没有关系 mysql-关系型数据库,所有的关系型数据库都是二进制不安全的【乱码丢失数据】 ->因为他有频繁的编解码,执行效率低,并且容易乱码 而redis编码和解码只会发生在客户端。没有频繁的编解码,执行效率很高,不会出现乱码 3、String数据类型常用命令 set key value get key ,如果key不存在,返回(nil) del key ,返回值为删除了几条数据 getset key value 修改,先获取,后修改 incr key,如果不存在,则会初始化为0后再进行自增 decr key append key value,如果不存在,则会自动创建,返回值为当前字符串的长度 incryby key increment decryby key increment 4、Hash数据类型常用命令 特点:占用的磁盘空间极少 flushdb 命令将数据库中的数据全部删除 hset key field value

Python基础之集合

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-21 13:28:22
Python基础三: 一、数据类型排序: 可变与不可变: 1、可变:列表,字典 2、不可变:字符串,元组,数字 访问顺序: 1、直接访问:数字 2、顺序访问:字符串,列表,元组 3、映射:字典 存放元素个数: 1、容器类型:列表,元组,字典 2、原子类型:数字,字符串 二、集合 特点: 1、不同元素组成 2、是无序的 3、集合中的元素必须是不可变类型(数字,字符串,元组) 4、定义集合的方式:test = {'xyy','xyyp',1,2,3,4}或test = set('xyy') 三、集合功能: add() 往集合中添加元素,一次只能添加一个元素 test = {'xyy','xyyp',1,2,3,4} test.add(5) test.add('xyp') print(test) 结果: clear() 清空集合内容 test = {'xyy','xyyp',1,2,3,4} test.clear() print(test) 结果: copy() 复制一份新的集合内容 test = {'xyy','xyyp',1,2,3,4} n = test.copy() print(n) 结果: pop() 删除随机的一个元素 test = {'xyy','xyyp',1,2,3,4} test.pop() print(test) 结果: remove() 删除指定的内容