首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scheme中模拟Python的范围

在Scheme中模拟Python的范围
EN

Stack Overflow用户
提问于 2012-10-16 15:47:55
回答 7查看 5.3K关注 0票数 10

如何在Scheme中创建连续数字列表?

在Python语言中,创建一个从1到10的整数列表的方法是range(1,11)。是否有与Scheme等效的方案?

mzscheme --version给了Welcome to Racket v5.2.1.

编辑:每个https://stackoverflow.com/a/7144310/596361要实现范围功能,需要以下代码:

代码语言:javascript
复制
#lang racket
(require srfi/1)
(iota 5 1)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-10-16 16:16:04

查找iota (如SRFI-1中所定义)。

示例:(iota 10 1)给出从1开始的10个连续整数(而不是默认值0)。

iota不接受与range相同的参数,但它复制了所有的功能-升序范围,降序范围,如果只给出一个界限,则从0开始,并能够指定间隔。

票数 12
EN

Stack Overflow用户

发布于 2012-10-16 17:16:18

这是一个版本,如果第一个数字较小,则执行升序范围;如果第一个数字较高,则执行降序范围:

代码语言:javascript
复制
(define range
  (lambda (n m)
    (cond
      ((= n m) (list n))
        (else (cons n (range ((if (< n m) + -) n 1) m))))))

这里有一个改进的版本,它可以接受1到2个参数;如果只给出一个参数,它的范围是从0到给定的数字:

代码语言:javascript
复制
(define range
  (lambda (n . m)
    (let
      ((n (if (null? m) 0 n)) (m (if (null? m) n (car m))))
      (cond
    ((= n m) (list n))
    (else (cons n (range ((if (< n m) + -) n 1) m)))))))
票数 5
EN

Stack Overflow用户

发布于 2014-05-24 15:17:31

在球拍中有一个内置的range函数,它的行为类似于Python。

代码语言:javascript
复制
> (range 10)
'(0 1 2 3 4 5 6 7 8 9)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12909856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档