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】序列的操作的更多相关文章

  1. Python数据结构之序列及其操作

    数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 在Python中,最基本的数据结构为序列(sequence).序列中的每个元素都有编号:从0开始递增 ...

  2. Oracle中序列的操作以及使用前对序列的初始化

    Oracle中序列的操作以及使用前对序列的初始化   一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...

  3. python中序列的操作

    Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...

  4. Python 序列通用操作介绍

    上一篇:python字符串基础一 下一篇:Python 列表操作简介 序列概览 Python包含6种内置的序列:列表.元组.字符串 .Unicode字符串.buffer对象.xrange对象.在序列中 ...

  5. 《python基础教程》笔记之 序列通用操作

    索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可 ...

  6. 2017.7.12 Python的6种内建序列及操作

    数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构. 在Python中,最基本的数据结构是序列(sequence).序列中的 ...

  7. python 序列通用操作

    通用序列操作:索引:greeting=hellogreeting[0] 分片:number[1,2,3,4,5,6]number[3:6]number[3:6:1] 序列相加:[1,2,3] + [4 ...

  8. oracle同一个数据库实例不同的用户之间的表、序列授权操作

    1.背景:用户jtuser中有jtproduct中表A,B的同义词,在用户jtuser中向表A,B插入数据,提示“权限不够” 2.将A,B表授权给jtuser用户 $ sqlplus / as sys ...

  9. oracle对序列的操作

    select t.*, t.rowid from tbl_type t order by t.id desc Select SEQ_TBL_TYPE_ID.NextVal From Dual; ; ; ...

随机推荐

  1. 《算法》第三章部分程序 part 6

    ▶ 书中第三章部分程序,加上自己补充的代码,包含双向索引表.文建索引.稀疏向量类型 ● 双向索引表 package package01; import edu.princeton.cs.algs4.S ...

  2. Yii Framework隐藏index.php文件的步骤

    Yii Framework隐藏index.php文件的步骤 作者:feebas 发布于:2012-4-23 13:36 Monday 分类:Yii Framework 1.开启apache的mod_r ...

  3. 自制进度条在python3下PyCharm中运行或在控制台按照目录运行

    import timescale = 50print("执行开始".center(scale//2,"-"))start = time.perf_counter ...

  4. Chrome(谷歌浏览器)和Firefox浏览器flash的swf文件发黑不透明问题解决方法

    一直以来看到各大网站的FLASH都是黑框框的,很好奇,难道他们不知道flash是可以设成透明的?于是用IE Tab插件浏览了下,发现人家的网页又正常,这样一来我就开始怀疑是我的Chrome有问题,于是 ...

  5. ASP.NET前台代码绑定后台变量方法总结

    经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有<%= str%>和<%# str %>两种方式,这里简单总结一下.如有错误或异议之处,敬请各位指教. 一方 ...

  6. git fail to push some refs....

    出现错误的主要原因是github中的README.md文件不在本地代码目录中 可以通过如下命令进行代码合并[注:pull=fetch+merge] git pull --rebase origin m ...

  7. sql server 2014登录账号

    NT Service\MSSQL$MSSQLSERVER2014NT Service\MSSQLSERVER 尝试打开或创建物理文件 'E:\aaa.mdf' 时,CREATE FILE 遇到操作系统 ...

  8. JDK7和JDK8concurrentHashmap区别

    哈希表 1.介绍 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值. 哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个 ...

  9. 机器学习进阶-阈值与平滑-图像平滑操作(去噪操作) 1. cv2.blur(均值滤波) 2.cv2.boxfilter(方框滤波) 3. cv2.Guassiannblur(进行高斯滤波) 4. cv2.medianBlur(进行中值滤波)

    1.cv2.blur(img, (3, 3))  进行均值滤波 参数说明:img表示输入的图片, (3, 3) 表示进行均值滤波的方框大小 2. cv2.boxfilter(img, -1, (3, ...

  10. Tornado的安装使用

    https://blog.csdn.net/a312024054/article/details/52207367 tornado原理: tornado的使用 import tornado.ioloo ...