集合运算

作业2 理解文法和语文

余生长醉 提交于 2020-02-04 23:46:38
1.理解符号串与集合运算。 L={A,B, … ,Z,a,b, … ,z} D={0,1, … ,9} 说明下表示的含义: LUD:全部字母和数字的集合 LD :由一个字母后跟一个数字组成的所有符号串集合 L 4 :由 4个字母组成的所有符号串的集合 L* :由字母组成的所有符号串包括空符号串的集合 D+ :以字母开头,后跟字母、数字组成的所有符号串集合 L(LUD)* :由一个或若干个数字组成的所有符号串集合 2.文法 G(Z):Z->aZb|ab定义的是什么样的语言? Z->ab Z->aZb->aabb Z->aZb->aaZbb->aaabbb 由若干个 a后跟若干个b 组成的所有符号串集合,且 a的个数等于b的个数。 3. 写出教材 22页例2.2中标识符的文法四元组形式(VN,VT,P,S)。 设 I 为标识符, L 为小写字母, D 为数字 V N ={I,L,D} V T ={L,D} P={I->L,I->IL,I->ID,L->L,D->D} S={I} 4.写出下列表达式的最左推导、最右推导。 G(E): E=> E + T | T T=>T * F | F F=>(E)| i i*i+i i+i*i i+(i+i) 注意观察最左和最右推导过程的不同。 i*i+i 最左推导: E=>E+T=>T+T=>T*F+T=>F*F+T=>i*F+T=>i*i+T=>i

学习笔记-Python 里的集合

房东的猫 提交于 2020-02-04 20:10:49
集合的特点 互异性 可以利用这个特性去重 >>> b="ABCCBA" >>>> setb=set(b) >>> setb {'A', 'B', 'C'} #去重 >>> listb=list(b) >>> listb ['A', 'B', 'C', 'C', 'B', 'A'] >>> set(listb) {'A', 'B', 'C'} 无序性 >>> setc={'C', 'B', 'A'} >>> setc {'A', 'B', 'C'} 确定性 放在集合里的可以是字符串,元组等不可变对象,不可以是列表,字典,集合等可变对象。 创建方法 花括号,使用逗号分隔元素(区别于字典,字典的元素是键值对) set frozenset(创建不可变集合) 集合的方法 添加元素:add ,update 删除 : pop , remove, discard,clear #remove 和 discard 的区别: 删除不存在元素的时候是否报错 >>> setb {'A', 'B', 'C'} >>> setb.remove("D") Traceback (most recent call last): File "<pyshell#215>", line 1, in <module> setb.remove("D") KeyError: 'D' >>> setb.discard("D")

python第三章数据类型

☆樱花仙子☆ 提交于 2020-02-03 06:48:20
第三章 数据类型 3.1 整型(int) 3.1.1 整型的长度 py2中有:int有取值范围,对于32位系统而言:-2^31~2^31-1 ​ 对于64位系统而言:-2^63~2^63-1 ​ 超出范围后,py2自动转换成long(长整型)数据。 py3中有:int (int/long)只有int数据. 3.1.2 整除 py2和py3中整除是不一样. py2:整除只保留整数,小数位会舍去.若要保留小数.则在文件头加 from __future__ import division py3整除保留所有. 3.2 布尔(bool) 布尔值就是用于表示真假。True和False。 其他类型转换成布尔值:只有''/0/[]/{}/()/set()转换为bool值为False,其余都是True. 3.3 字符串(str) 字符串是写代码中最常见的 : 单引号,如'王飞' 双引号,如”王大“ 三引号,如“”“王小”“”,三引号支持换行。 注意:整型数据可以+和×,字符串数据也可以+和×。如 name='五五开' new_name=name*3 print(new_name) # '五五开五五开五五开' python内存中的字符串是按照:unicode 编码存储。对于字符串是不可变数据类型。 3.3.1字符串的格式化 字符串格式化的意义,大部分字符过于冗长,使用字符串格式化能大大加快效率

set

柔情痞子 提交于 2020-02-03 00:06:25
set :无序,不重复,add pop(添加和去除) frozenset :(不可变集合) 一旦设置好 无法进行修改,好处: frozen可以作为dict的key set初始化的方式 s = set("abcdea") s2 = set(["a","b","c","d","e","f"]) s3 = {1,2,4} python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。 下面来点简单的小例子说明把。 >>> x = set('spam') >>> y = set(['h','a','m']) >>> x, y (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm'])) 再来些小应用。 >>> x & y # 交集 set(['a', 'm']) >>> x | y # 并集 set(['a

python数据类型(最终弹)

限于喜欢 提交于 2020-02-02 23:56:50
世界上最容易的事是坚持,最难的事也是坚持。开通博客园已两月有余,但实际上笔者本人的活跃度非常低,痛定思痛,自己选的路含泪也要走下去,继续坚持! 本文承接前几个月的python数据类型系列,完成对字典与集合两种数据类型的介绍,并结束python数据类型系列。 字典是python语言中常用的数据类型之一,顾名思义,一个字典就是许多“键值对”的集合,一个键值对就是字典的一个数据元素,示例如下: 从上图可以看到,该字典含有三个键值对,每个键值对的“键”都是字符串,“值”有数值型、布尔型和字符串。当然,python字典的键值对的“键”与“值”可以是任何python基本数据类型,即“键”可以是数值型,“值”可以是列表,“键”可以是元组,“值”可以是另一个字典,如此等等;需要注意的是,同一个字典中,每一个键值对的“键”在该字典中是唯一的,“值”没有限制,同一字典中两个不同的键值对的“值”完全可以相同。 再来看一下“集合”这个数据类型,但凡接触过数学中的集合概念,那么理解python的集合也就非常容易了。与数学中的集合一样,python的集合就是一些互异数据的组合,示例如下: 需要注意:定义空集合不能直接用大括号的方式,那样python解释器会把它理解为一个空子典,而是使用图中特定的方法定义空集合。 集合定义好后,可以对其进行交、差、并等常见运算(多个集合之间),和数学中的集合一样

python基础3 集合

别来无恙 提交于 2020-02-02 07:53:15
集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:   去重,把一个列表变成集合,就自动去重了。   关系测试,测试两组数据之前的交集、差集、并集等关系。 集合的创建 set1 = set({1,2,'barry'}) set2 = {1,2,'barry'} print(set1,set2) # {1, 2, 'barry'} {1, 2, 'barry'} 集合的增 add(),update() set1 = {'alex','wusir','ritian','egon','barry'} set1.add('景女神') print(set1) #update:迭代着增加 set1.update('A') print(set1) set1.update('老师') print(set1) set1.update([1,2,3]) print(set1) 集合的删 remove(); pop();clear();del set1 = {'alex','wusir','ritian','egon','barry'} set1.remove('alex') # 删除一个元素 print(set1) set1.pop() # 随机删除一个元素 print(set1) set1

python中的set集合详解

有些话、适合烂在心里 提交于 2020-02-02 05:06:51
一、集合 1.set集合的介绍   集合是无序的,不可重复的数据集合,集合里面的每个元素必须是可哈希的(不可变的数据类型),但是集合是不可哈希的,所以集合做不了字典的键   集合的创建方式:     ①:通过set()创建集合,格式 :集合名字=set(对象),该对象可以是任意的数据类型,但是对象里面的每个元素必须是不可变的数据类型,是可以hash的     ②:通过{}创建   set1=set([1,2,3,4,5,6,7]) print(set1) #{1, 2, 3, 4, 5, 6, 7} set2=set('helloworld') print(set2) # {'r', 'h', 'w', 'd', 'l', 'o', 'e'} set3={1,2,3,4,5,6,7,8} print(set3) # {1, 2, 3, 4, 5, 6, 7, 8} 2、集合常用的方法   2.1 集合的增  set1=set({'jim','jordan','Spider Man'}) #第一种方式,通过add()添加元素 set1.add('Kong Fu Panda') print(set1) #{'Spider Man', 'Kong Fu Panda', 'jordan', 'jim'} #第二种方式,通过update()添加元素,如果添加的元素里面时可以迭代的元素

Oracle 5~ 集合运算、连接查询

故事扮演 提交于 2020-02-02 03:05:02
1.集合运算就是把多个查询结果组合成一个结果。 当前数据库中有stuinfo和stuinfo_2018两张表,stuinfo有4条数据:张三、王五、龙七、李四,stuinfo_2018中只有1条王五的数据。 (1)INTERSECT 交集:返回两个查询共有的结果。 (2)UNION ALL 并集重复:返回各个查询的所有结果,包括重复的数据行。 (3)UNION 并集不重复:返回各个查询的所有不重复的结果。 (4)MINUS 补集:返回第一个查询结果减去第二个查询结果的剩余数据行。 2.连接查询 (1)内连接(inner join):两张表通过某个字段进行内连接,查询结果是通过该字段按关系运算符匹配出的数据行。 等值连接:连接条件用‘=’比较被连接的值,查询结果是被连接表中的所有行。(不等连接) 例如,关联查询学生信息表stuinfo和班级信息表class。 不等连接:连接条件用‘=’以外的运算符比较连接。 小插曲:sqlplus的界面实在是太不友好了,所以我去下载了一个sql developer,查询结果看起来清晰一点。 sql developer的下载链接: https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html 为了练习连接查询,我更新了数据库里的表stuinfo 和 stuinfo_2018

01_python基础语法

。_饼干妹妹 提交于 2020-02-01 19:48:39
python基础语法 一.基本数据类型 Number:数字 int: 整数 float: 浮点数 '2/2’得到的是一个浮点类型的结果,'2//2’得到的则是一个整型的结果;例如: 1/2=0.5 1//2=0 bool: 布尔类型,表示真(True)和假(False),布尔类型属于数字,可以通过int(True)和int(False)将布尔类型转化为数字,也可以通过bool方法将数字转换为bool类型,例如: int(True)=1 int(False)=0 bool(10)=True bool(1.3)=True bool(0)=False bool方法还可以用做非空判断: bool('abc')=True bool('')=False bool([1,2,3])=True bool([])=False bool({1,1,1})=True bool({})=False bool(None)=False complex: 复数 str:字符串,可以使用单引号,双引号和三引号表示字符串 获取一个字符的ascii码值: ord("a")=97 多行字符串:使用三引号定义多行字符串 原始字符串:r’str’,原始字符串不会去识别转义字符,而是将其原样去输出 字符串运算: +:把两个字符串拼接起来 *:例如’hello’*3,表示把’hello’这个字符串重复3次

Java提高篇——equals()与hashCode()方法详解

末鹿安然 提交于 2020-02-01 13:16:32
阅读目录 equals()方法详解 hashcode() 方法详解 Hashset、Hashmap、Hashtable与hashcode()和Equals()的密切关系 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) public int hashCode() Object类是类继承结构的基础,所以是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法。 equals()方法详解 equals()方法是用来判断其他的对象是否和该对象相等. equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、Integer、Double等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。 比如在String类中如下: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) {