在REBOL或Red中,Python的列表[3:7]相当于什么?

use*_*291 2 rebol red

使用Rebol选择我只能获得一个元素:

list: [1 2 3 4 5 6 7 8 9]

pick list 3
Run Code Online (Sandbox Code Playgroud)

在python中,可以获得一个完整的子列表

list[3:7]
Run Code Online (Sandbox Code Playgroud)

Hos*_*ork 6

  • AT可以在列表中寻找位置.
  • 默认情况下, COPY将从一个位置复制到列表末尾
  • COPY 的/ PART细化允许您为复制添加限制

将整数传递给/ PART假设您要复制多少内容:

>> list: [1 2 3 4 5 6 7 8 9]

>> copy/part (at list 3) 5
== [3 4 5 6 7]
Run Code Online (Sandbox Code Playgroud)

如果您提供一个系列位置作为结束,那么它将复制该点,因此如果您的范围意味着包含,则必须超过它.

>> copy/part (at list 3) (next at list 7)
== [3 4 5 6 7]
Run Code Online (Sandbox Code Playgroud)

对范围方言有一些建议,我找不到任何副手.简单的代码来提出一个想法:

range: func [list [series!] spec [block!] /local start end] [
    if not parse spec [
        set start integer! '.. set end integer!
    ][
        do make error! "Bad range spec, expected e.g. [3 .. 7]"
    ]
    copy/part (at list start) (next at list end) 
]

>> list: [1 2 3 4 5 6 7 8 9]

>> range list [3 .. 7]
== [3 4 5 6 7]
Run Code Online (Sandbox Code Playgroud)