这是一个非常简单的问题,但我无法在任何地方找到文档.我想将i
列表的第th个元素更改为切片("literal colon",如in [:]
).有没有办法做到这一点?
我试过这样做:
indexlist = [0] * dim
indexlist[i] = :
Run Code Online (Sandbox Code Playgroud)
这会引发语法错误,但我认为它可以解决我想要做的事情.
通过"字面冒号",你似乎意味着一个切片对象.
例如:
your_list[i] = slice(None)
Run Code Online (Sandbox Code Playgroud)
为了解释发生了什么,切片表达式实际上是作为切片对象(或整数等)的元组传递的.
something[start:stop:step]
相当于something[slice(start, stop, step)]
.同样,something[:]
相当于something[slice(None)]
.
切片是通过对象的__getitem__
方法实现的,所以这也等同于something.__getitem__(slice(start, stop, step))
因为你numpy
在评论中提到过,你可能会看一下np.index_exp
或np.s_
.它允许您从索引中快速创建切片元组,并允许您查看发生的情况.
例如:
import numpy as np
print np.s_[:, 1:5, ::-1, ...]
Run Code Online (Sandbox Code Playgroud)
收益率:
(slice(None, None, None), slice(1, 5, None), slice(None, None, -1), Ellipsis)
Run Code Online (Sandbox Code Playgroud)
哪个是切片对象的元组,您可以存储然后直接用于切片对象.(例如slices = np.s_[0, :, :]
然后y = x[slices]
).