假设我想从Python的列表中获取第一个元素,第3到200个元素以及步长为3的第201个元素到最后一个元素。
一种方法是使用不同的索引和连接:
new_list = old_list[0:1] + old_list[3:201] + old_list[201::3]
有没有办法只使用old_list
上的一个索引来完成这个操作?我希望得到类似以下的结果(我知道这在语法上是不正确的,因为列表索引不能是列表,而且由于 Python 不幸地没有切片字面量,我只是在寻找接近的东西):
new_list = old_list[[0, 3:201, 201::3]]
我可以通过切换到NumPy数组来实现其中一些功能,但我更感兴趣的是如何在本地Python列表中实现。我也可以创建一个切片制造者或类似的东西,并可能将其强制转换为给我一个等效的切片对象以表示所有所需切片的组合。
但我正在寻找一些不涉及创建新类来管理切片的方法。我想只是将切片语法连接起来并将其提供给我的列表,让列表明白这意味着要分别获取切片,并在最后将它们的结果连接起来。
slice
? - Ignacio Vazquez-Abrams(0:10:2)
,好像它本身就代表了索引。你必须经过繁琐的额外层次,制作自己的切片对象,这会破坏切片语法的所有美好之处。请参见我的问题,也链接在上面。 - ely