【Scheme】序列的操作
1.序列的表示
序列
序列(表)是由一个个序对组合而成的,具体来说就是让每个序对的car部分对应这个链的条目,cdr部分则是下一个序对。
对于1->2->3->4这个序列我们可以表示为:
(cons 1
(cons 2
(cons 3
(cons 4 null)))) 注:null代表表尾
为了方便,上面的序列也可以通过(list 1 2 3 4)产生。
表操作
返回表中第n项:
- n=0,返回表的char
- n>0,返回表的cdr的第n-1项
(define (list-ref items n)
(if (= n 0)
(car items)
(list-ref (cdr items) (- n 1))))
返回表长度:
(define (length items)
(if (null? items)
0
(+ 1 (length (cdr items)))))
或
(define (length items)
(define (length-iter items n)
(if (null? items)
n
(length-iter (cdr items) (+ n 1))))
(length-iter items 0))
表的连接:
- 如果list1是空表,结果就是list2
- 否则先做出list1的cdr和list2的append,再将list1的car通过cons加到结果的前面。
(define (append list1 list2)
(if (null? list1)
list2
(cons (car list1) (append (cdr list1) list2))))
表的反转:
- 如果items为空表,返回null
- 否则返回(cdr items)的反转与(car items)的连接,因将(car items)看做是表中的一个元素(无论其本身是否为表),故在连接时要将其再次构造为表。
(define (reverse items)
(if (null? items)
null
(append (reverse (cdr items)) (list (car items)))))
对表的映射:
(define (map proc items)
(if (null? items)
null
(cons (proc (car items)) (map proc (cdr items)))))
【Scheme】序列的操作的更多相关文章
- Python数据结构之序列及其操作
数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 在Python中,最基本的数据结构为序列(sequence).序列中的每个元素都有编号:从0开始递增 ...
- Oracle中序列的操作以及使用前对序列的初始化
Oracle中序列的操作以及使用前对序列的初始化 一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...
- python中序列的操作
Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...
- Python 序列通用操作介绍
上一篇:python字符串基础一 下一篇:Python 列表操作简介 序列概览 Python包含6种内置的序列:列表.元组.字符串 .Unicode字符串.buffer对象.xrange对象.在序列中 ...
- 《python基础教程》笔记之 序列通用操作
索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可 ...
- 2017.7.12 Python的6种内建序列及操作
数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构. 在Python中,最基本的数据结构是序列(sequence).序列中的 ...
- python 序列通用操作
通用序列操作:索引:greeting=hellogreeting[0] 分片:number[1,2,3,4,5,6]number[3:6]number[3:6:1] 序列相加:[1,2,3] + [4 ...
- oracle同一个数据库实例不同的用户之间的表、序列授权操作
1.背景:用户jtuser中有jtproduct中表A,B的同义词,在用户jtuser中向表A,B插入数据,提示“权限不够” 2.将A,B表授权给jtuser用户 $ sqlplus / as sys ...
- oracle对序列的操作
select t.*, t.rowid from tbl_type t order by t.id desc Select SEQ_TBL_TYPE_ID.NextVal From Dual; ; ; ...
随机推荐
- EA Data Modeling 显示别名设置
1.设置 2.效果
- C++学习基础十三——struct和class的区别
来自:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct是对C中struct进行了扩展,它不单是一个包含不同数据类型的数据 ...
- Jmeter之Bean shell使用-常用内置变量
Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.l ...
- golang执行shell命令
ommand := "echo hello” cmd := exec.Command("/bin/bash", "-c", command) byte ...
- centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)
centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Ng ...
- jsp不解析el表达式,不识别jstl标签,找不到http://java.sun.com/jsp/jstl/core
问题描述: jsp页面中el表达式,例如:${pageContext.request.contextPath},原样呈现,未被解析. 解决方案: 为jsp页添加page指令如下: <%@ pag ...
- python语言中的函数装饰器
装饰器 什么是装饰器? 装饰:给已有的对象(函数)添加新的功能 器:工具 在python中指具备某些功能的函数 装饰器:装饰器就是一个给其他函数增加功能的函数 一种设计原则: ...
- 【387】Python format 格式化函数
参考:Python format 格式化函数 # 保留小数点后两位 f'{3.1415926:.2f}' # 带符号保留小数点后两位 f'{3.1415926:+.2f}' f'{-1:+.2f}' ...
- Notepad++好用的功能和插件
Notepad++是一款Windows环境下免费开源的代码编辑器,支持Python,shell,Java等主流语言编写.本文主要描述Notepad++一些好用但是容易忽视的功能. 1.根据文件内容查找 ...
- vscode 不显示指定后缀名pyc文件
不显示python生成的pyc文件 不显示java eclipse编辑器生成的.metadata生成的文件夹 py文件执行后会生成.pyc文件,会影响侧边栏的使用,可以通过如下设置隐藏.pyc等中间文 ...