集合符号

Python序列应用知识回顾

混江龙づ霸主 提交于 2020-01-26 15:51:07
Python序列应用 1.序列 序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列。序列结构有列表、元组、集合、字典和字符串。Python对序列中列表、元组、字符串有索引、切片、相加和相乘操作,可以通过关键字in检查某个元素是否为序列的成员。 (1)索引 序列中的每个元素都有一个编号被称为索引,通过索引可以访问序列中的任何元素。索引类似C语言数组中的下标从0开始表示第一个元素,依次递增,但 索引可以为负数 ,例如:-1表示最后一个元素。 (2)切片 切片是访问序列中元素的一种方法,可以访问一定范围内的元素。通过切片可以生成一个新的序列。格式如下: name[start:end:step] ''' name:表示序列的名称 start:表示切片开始的位置 end:表示切片的截止位置 step:表示切片的步长 ''' 通过切片可以截取序列上任意一处的信息,比如一个字符串可以通过切片生成另外一个字符串;一个列表可以通过切片,输出指定位置的元素。可以说是很方便的功能。 (3)相加和相乘 Python中,多个相同类型的序列可以相加成一个新序列。一个序列可以乘以一个数字n,也会生成一个重复这个序列元素n次的新序列。 2.列表 Python中的列表是由一系列特定顺序排列的元素组成的,是可变序列。列表元素可以是整数、实数、字符串、列表、元组等。创建列表格式: \\name =

编译原理(词法分析)

…衆ロ難τιáo~ 提交于 2020-01-22 09:05:09
文章目录 1.编译原理概述 2.词法分析 正规集 正规式 正规文法 自动机 已知集合求正规式、DFA; 已知正规式求DFA、集合; 已知DFA求正规式、集合; DFA的确定化、最小化。 1.编译原理概述 程序设计语言的翻译模式:编译、汇编;转换(预处理);反汇编、反编译;交叉编译、交叉汇编 静态语义错误(如分母不为0)在语义分析阶段可以被检测出来 词法分析里的坑点,因为词法分析只是识别记号,它并不会排查声明变量结构性错误,这个错误要到语法分析之中才可以被检查出来 动态语义错误编译过程中一般不会处理,只有到程序执行时才会发现 几个错误的典型实例 对程序语句的翻译主要考虑两类语句:声明语句和可执行语句,其中,对声明语句,主要是将所需要的信息正确地填入合理组织的 符号表 中;对可执行语句,则是 翻译成中间代码 在以阶段划分的编译器中, 符号表管理 和 出错处理 两个阶段的工作贯穿于编译器工作始终。 有两个因素使得有限自动机是不确定的,一个是 具有ε状态转移 ,另一个是对同一字符, 可能有多于一个的下一状态转移 词法分析器有四个作用,请给出其中的任意两个: 识别记号并交给语法分析器 / 滤掉源程序中的无用成分 / 处理与具体平台有关的输入 / 调用符号表管理器或出错管理器 语法分析器根据语法规则 识别出记号流中的结构 ,并 构造一棵能够正确反映该结构的语法树 。 检查输入中的错误

自己动手开发编译器(四)利用DFA转换表建立扫描器

回眸只為那壹抹淺笑 提交于 2020-01-12 16:53:33
上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法。有些同学表示还是难以理解NFA到底怎么转化为DFA。所以本篇开头时我想再多举一个例子,看看NFA转化为DFA之后到底是什么样。首先我们看下面的NFA,它是从一组词法分析所用的正则表达式转换而来的。这个NFA合并了IF、ID、NUM、error这四个单词的NFA。因此,它的四个接受状态分别代表遇到了四种不同的单词。 用上一篇学到的方法,我们需要求出一个DFA,它的每个状态都是NFA状态集合的一个子集。首先我们要定义任何状态的ε-闭包,之所以叫ε-闭包,是因为它对ε转换而言是封闭的,也就是说ε-闭包内任何状态,经过ε转换之后,都还是闭包内的一个状态。接下来,从初始状态ε-闭包开始,我们要计算输入任何一种字符后,NFA所能转换到的下一个状态集合。这一步的公式是: 其中那个U型的符号,表示:对NFA状态集合d中的任何状态s,求出s在遇到符号c之后所能达到的所有状态组成的集合,再把所有这种集合求并集。最后,再对这个集合求出ε-闭包。我很难找出一种更简单的描述方式,简而言之就是要计算出NFA状态集合d,在输入符号c之后,所能达到的一切状态的新集合。而这个集合,就会变成DFA的一个状态,这个状态是从d,沿着一条标有c的边达到的。我们首先求出初始状态的ε

4.类文件结构

五迷三道 提交于 2020-01-12 07:47:50
4.类文件结构 文章目录 4.类文件结构 类文件 类文件数据 魔数与版本号 常量池 访问标志 类索引父类索引接口索引 字段表集合 方法表集合 属性表集合 简单粗略介绍class文件的结构。 类文件 类文件由 无符号数 和 表 构成,且占用整数个字节的空间 无符号数 u1u2u4u8,用来描述数字索引引用数量值字符串值。 表 多个无符号数或其他表作为数据项构成的复合数据结构。 类文件数据 魔数与版本号 , 常量池 , 访问标志 , 类索引父类索引接口索引 , 字段表集合 , 方法表集合 , 属性表集合 。 魔数与版本号 文件的头四个字节为0XCAFEBABE,代表此文件为class文件,接下来存储的是文件的次版本号和主版本号。 常量池 主要存放字面量和符号引用。 字面量:文本字符串、final声明的常量值等。 符号引用:类/接口的全限定名,字段的名称和描述符,方法的名称和描述符。 访问标志 标志类/接口的访问信息。 是类还是接口 是否为public、final、abstract…等等。 类索引父类索引接口索引 用来确认类的继承关系。 字段表集合 描述接口/类中声明的变量。包括类变量和实例变量。 方法表集合 描述类/接口中声明的方法信息。 属性表集合 在class文件、字段表、方法表中都携带自己的属性表集合。 包含:字节码,常量值,方法可抛出的受检查异常,内部类列表等等。 来源:

编译原理知识

╄→гoц情女王★ 提交于 2020-01-08 01:12:38
1、将表达式翻译成后缀式 https://zhidao.baidu.com/question/421915764.html 2、绪论   指令格式:操作码 操作地址码   低级语言:机器语言、汇编语言   翻译:逻辑等价的程序语言转变、编译:专指高级语言一次性转化为低级语言、解释:高级语言的一解释一执行   编译程序工作过程一般可分为五个阶段:词法分析、语法分析、语义分析、优化和目标代码生成,同时伴随表格管理和出错处理   编译有自编译和交叉编译 3、词法分析   任务:从左到右逐个字符地对源程序进行扫描,产生一个个单词 (Token)符号,输入源程序,输出单词符号(流),需要不断访问、更新符号表   符号分类:保留字、标识符、常数、运算符、界符   输出为二元式:(单词种别,单词自身的值/内码值)   状态转换图     作用:识别单词     定义:状态转换图是 状态有限的有向图 ,结点代表 状态 ,用圆圈表示;结 点之间可由有向边连接,代表 状态转换关系 ,有向边上可标 记 字符 ,表示前一状态接受某一个字符之后的状态转移     状态转换图的表示:       • 初始状态用“ ->○”表示 • 非终止状态用“○”表示 • 状态之间的跳转用“ ”(有向边)表示 • 终止状态用“◎*”表示       含分支的状态 • 对应一个switch()语句 • 或对应一组if

JQuery基础学习笔记(1)

时光毁灭记忆、已成空白 提交于 2020-01-07 12:57:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> //------------------------- 第一章 认识JQuery ------------------------- ·页面加载事件(可以写多个ready()) $(document).ready(function(){ alert("hello world"); }) ·链式操作:JQuery允许你在一句代码中操做任何与其相关联的元素,包括其子元素、父元素等 //选择名称为myDiv的元素,为其自身添加css1的样式,然后再选择其所有子元素a,为其移除css2样式 $("#myDiv").addClass("css1").children("a").removeClass("css2"); ·JQuery中获得一个对象的所有子元素内容 $("#myDiv").html() ·JQuery中的变量 与 DOM中的变量 var $myVar = ""; var myVar = ""; ·DOM对象 转换成 JQuery对象 var obj = documnet.getElementById("myDiv"); var $obj = $(obj); ·JQuery对象 转换成 DOM对象 var $obj = $("#myDiv"); var obj = $obj.get(0); //或者var

Python基本数据类型

喜欢而已 提交于 2020-01-01 21:23:29
一、简介 Python基本数据类型一般分为: 数字、字符串、列表、元组、字典、集合这 六种基本数据类型 。 其中数字又包含整型(整型又包括标准整型、长整型(Python2.7及之前版本有))、浮点型、复数类型、布尔型(布尔型就是只有两个值的整型)、这几种数字类型。列表、元组、字符串都是序列。 二、各种数据类型详解 2.1、数字 数字类型是不可更改的对象。对变量改变数字值就是生成/创建新的对象。Python支持多种数字类型: 整型(标准整型和长整型(Python2.7及之前的有这种类型))、布尔型、双精度浮点型、十进制浮点型、复数。 标准整型 int,标准整型,在大多数32位机器上标准整型取值范围是-2^31到2^31-1,也就是-2147483648~2147483647,如果在64位机器使用64位编译器,那么这个系统的标准整型将是64位。 Python2.7代码: >>> 2**63-1 9223372036854775807L >>> -2**63 -9223372036854775808L >>> 9223372036854775807 9223372036854775807 >>> 9223372036854775808 9223372036854775808L >>> -9223372036854775808 -9223372036854775808 >>>

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

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() 删除指定的内容

集合

橙三吉。 提交于 2019-12-12 18:36:35
集合 1.定义 集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 创建格式: s = {'1','2','3'} 或者 s1 = set('hello') 2.添加元素add s = {1,2,3} s.add('4') print(s) 3.清除clear() 4.删除pop() s = {1,2,3,'z','h','a','n','g'} s.pop() print(s) #结果随机删除 {2, 3, 'n', 'g', 'z', 'h', 'a'} 5.删除remove,discard s = {1,2,3,'z','h','a','n','g'} s.remove('world') #删除元素不存在会报错 s.discard('hello') #删除元素不存在不会报错 print(s) 6.求交集 s = {'py','linux','mysql','oracle'} s1 = {'py','linux','c#'} print(s&s1) #求交集的符号& print(s.intersection(s1)) #求交集的方法 #结果 {'linux', 'py'} 7.求并集 s = {'py','linux','mysql',