文档涵盖了slice()对象的3个用法:
obj[:stop]
= obj[slice(stop)]
obj[start:stop]
= obj[slice(start, stop)]
obj[start:stop:step]
= obj[slice(start, stop, step)]
但是如果我事先不知道物体的长度怎么办呢?将stop
设置为非常高的值,例如2E32-1
?
obj[start:]
= obj[slice(start, 2E32-1)]
?obj[:]
= obj[slice(2E32-1)]
?答案 0 :(得分:5)
您可以将stop
参数设置为None
以无限期地继续。
obj = [1, 2, 3, 4]
obj[2:] == obj[slice(2, None)]
# == [3, 4]
obj[:] == obj[slice(None, None)]
# == [1, 2, 3, 4]
obj[::2] == obj[slice(None, None, 2)]
# == [1, 3]
答案 1 :(得分:2)
您可以使用Python的slice()
函数以及切片符号提供的所有功能。在内部,var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016'];
var values = ['janData', 'febData', 'marData'];
var dataMap = {};
keys.forEach(function(k, i){
dataMap[k] = values[i];
})
console.log(dataMap);
函数和切片表示法都使用slice
对象。
在您传递空值的切片表示法 slice()
中,您可以通过将该值传递为{{1}来获得等效的your_list[start:stop:step]
函数slice
}}。例如:
仅使用slice(start, stop, step)
空None
start
仅使用end
空>>> my_list = list(range(10)) # for demonstration purpose
# start: `5`
# end: empty - meaning end of the list
>>> my_list[5:]
[5, 6, 7, 8, 9]
# use `end` as `None`
>>> my_list[slice(5, None)]
[5, 6, 7, 8, 9]
end
start
和>>> my_list[:5]
[0, 1, 2, 3, 4]
>>> my_list[slice(5)]
[0, 1, 2, 3, 4]
# OR
>>> my_list[slice(None, 5)]
[0, 1, 2, 3, 4]
为空(列表副本)
start
更多例子:
end