三分类数据集,集合数据的类型有哪些
集合与数学中的集合相似,是指具有相同性质的对象的全体。组成集合的每个对象称为集合的元素。集合的特性:集合中的元素是互异的,也就是说相同的元素视为一个元素(互异性)集合中的元素是无序的,即{1,2,3,4,5}和{5,4,3,2,1}是同一个集合(无序性)集合中元素的个数不能超过256个元素和集合的关系是“属于”或“不属于”3.1集合类型的定义定义格式:type = set of ;说明:基类型是集合中的元素的类
Pascal语言是少数几种将集合作为内部数据类型的程序设计语言之一。
集合与数学中的集合相似,是指具有相同性质的对象的全体。组成集合的每个对象称为集合的元素。集合的特性:
集合中的元素是互异的,也就是说相同的元素视为一个元素(互异性)集合中的元素是无序的,即{1,2,3,4,5}和{5,4,3,2,1}是同一个集合(无序性)集合中元素的个数不能超过256个元素和集合的关系是“属于”或“不属于”3.1集合类型的定义定义格式:
type = set of ;说明:
基类型是集合中的元素的类型,可以是字符型、布尔型、枚举类型和子界等顺序类型,不能是整型、实型和其他类型。若基类型是枚举或子界类型,则必须先定义基类型,再定义集合类型。如:
type week = (sun, mon, tue, wed, thu, fri, sat); age = 0..99; CharSet = set of char; WeekSet = set of weel; AgeSet = set of age; TenSet = set of 1..10; LetterSet = set of 'A'..'z';集合在内部以位的形式存储其元素,所以在运行速度上和内存利用上更高效。集合如果少于32个元素,会直接存储在CPU的寄存器中,效率会更高。
3.2集合类型变量的声明集合类型变量的声明与其他类型变量的声明完全相同。
如:
var w1, w2: WeekSet;也可以不经过类型定义,直接声明集合类型的变量:
var n1, n2: set of (sun, mon, tue, wed, thu, fri, sat); a1, a2: set of 0..99;3.3集合变量的取值集合变量的取值称为集合值,形式如下:
[, , ..., ]如果集合的基类型有n个元素,则该集合的取值有2的n次幂个,其中包含一个空集合([])。
3.4集合类型的运算已知两个相同基类型的集合S1和S2,其元素x,则集合运算法则如下:
1.算术运算
运算
表达式
运算结果
满足交换律
并
S1 S2
两个集合中所有不重复的元素组成的新集合
是
交
S1*S2
两个集合中所共有的元素组成的新集合
是
差
S1-S2
所有属于S1但不属于S2的元素的集合
否
2.逻辑运算
运算
表达式
运算结果
满足交换律
相等
S1 = S2
如果S1和S2所包含的元素完全相同,则为真
是
不等
S1 S2
如果S1和S2所包含的元素不完全相同,则为真
是
包含
S1 >= S2
如果S2中的每个元素都在S1中,则为真
否
被包含
S1
如果S1中的每个元素都在S2中,则为真
否
属于
x in S1
如果元素x被包含在S1中,则为真
集合运算的优先级:
优先级
运算符
操作数
结果
高
*
集合
集合
中
、-
集合
集合
低
=、、>=、
集合
逻辑
最低
in
左操作数是元素,右操作数是集合
逻辑
示例:利用集合实现输入成绩,输出评定等级。界面如下图:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);type TScore = 0..10; Grade = set of TScore;var Bjg, Jg, Zhong, Liang, You: Grade; Score: Real; ScoreDiv10: Integer;begin // 评定按钮单击事件 Bjg := [0, 1, 2, 3, 4, 5]; Jg := [6]; Zhong := [7]; Liang := [8]; You := [9, 10]; Score := StrToFloat(Edit1.Text); ScoreDiv10 := Trunc(Score / 10); if ScoreDiv10 in Bjg then Label2.Caption := '不及格'; if ScoreDiv10 in Jg then Label2.Caption := '及格'; if ScoreDiv10 in Zhong then Label2.Caption := '中'; if ScoreDiv10 in Liang then Label2.Caption := '良好'; if ScoreDiv10 in You then Label2.Caption := '优秀';end;redis的五种数据类型是什么?
如下:
一、string
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
命令: SET 和 GET 命令。
二、hash
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。
三、list
列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
lpush 设置值,lrange取值。
四、set
redis的set是string的无序集合。集合通过哈希表实现。
添加一个string元素到key对应的set集合中,用 sadd命令。返回1表示成功,0表示在集合中已存在,返回错误表示key对应的set不存在。
查看用smembers 命令。
集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
五、zset
redis的zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
添加元素到集合,元素在集合中存在则更新对应score:zadd key score member。
Redis数据模型:
Redis的外围由一个键、值映射的字典构成。与其他非关系型数据库主要不同在于:Redis中值的类型不仅限于字符串,还支持如下抽象数据类型:
1、字符串列表。
2、无序不重复的字符串集合。
3、有序不重复的字符串集合。
4、键、值都为字符串的哈希表。
值的类型决定了值本身支持的操作。Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。
5种数据类型
Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。① 简介:String是Redis最基础的数据结构类型,它是二进制安全的,可以存储数字,图片或者序列化的对象,值最大存储为512M
简单使用举例: set key value、get key等
应用场景:共享session、分布式锁,计数器、限流。
② 哈希类型是指v(值)本身又是一个键值对(k-v)结构
简单使用举例:hset key field value 、hget key field
内部编码:ziplist(压缩列表) 、hashtable(哈希表)
应用场景:缓存用户信息等。
③ Redis list 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
底层双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列
lpush+lpop=Stack(栈)
lpush+rpop=Queue(队列)
④ Redis set是string类型的无序集合。不包含重复元素
⑤ Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。但sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。
Redis sorted set的内部使用ziplist或跳表,跳表组合了skiplist和hash,HashMap里放的是成员到score的映射,而跳表里存放的是所有的成员,
跳表就是在链表的基础上,增加多级索引提升查找效率。
跳表支持平均 O(logN),最坏 O(N)复杂度的节点查找,还可以通过顺序性操作批量处理节点。
文章评论