什么是REBOL或Red中Python的列表[3:7]的等价物?

时间:2017-10-19 07:29:40

标签: rebol red

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

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

pick list 3

在python中,可以使用

获得整个子列表
list[3:7]

2 个答案:

答案 0 :(得分: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]

如果您提供系列位置作为结尾,那么它会将复制到那一点,所以如果你的范围意味着你必须超过它包容性。

>> copy/part (at list 3) (next at list 7)
== [3 4 5 6 7]

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

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]

答案 1 :(得分:3)

>> list: [1 2 3 4 5 6 7 8 9]
== [1 2 3 4 5 6 7 8 9]
>> copy/part skip list 2 5
== [3 4 5 6 7]

因此,您可以跳到列表中的正确位置,然后根据需要复制多个连续成员。

如果你想要一个等效的功能,你可以自己编写。