REBOL 或 Red 中 Python 的列表 [3:7] 的等效项是什么?
What's the equivalent of Python's list[3:7] in REBOL or Red?
使用 Rebol pick 我只能得到一个元素:
list: [1 2 3 4 5 6 7 8 9]
pick list 3
在python中可以得到一个完整的子列表
list[3:7]
将一个整数传递给 /PART 假定您要复制多少东西:
>> list: [1 2 3 4 5 6 7 8 9]
>> copy/part (at list 3) 5
== [3 4 5 6 7]
如果您提供一系列 position 作为结束,那么它会复制 up to 那一点,所以你有如果您的范围意味着包容性,请超越它。
>> 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]
>> 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]
因此,您可以跳到列表中的正确位置,然后根据需要复制任意数量的连续成员。
如果你想要等价的功能,你可以自己写。
使用 Rebol pick 我只能得到一个元素:
list: [1 2 3 4 5 6 7 8 9]
pick list 3
在python中可以得到一个完整的子列表
list[3:7]
将一个整数传递给 /PART 假定您要复制多少东西:
>> list: [1 2 3 4 5 6 7 8 9]
>> copy/part (at list 3) 5
== [3 4 5 6 7]
如果您提供一系列 position 作为结束,那么它会复制 up to 那一点,所以你有如果您的范围意味着包容性,请超越它。
>> 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]
>> 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]
因此,您可以跳到列表中的正确位置,然后根据需要复制任意数量的连续成员。
如果你想要等价的功能,你可以自己写。