如何将列表[a, b, c]转换为Python切片索引[:a, :b, :c]?

8
例如,我有一个多维数组组成的集合。我想编写一个方法来指定此数组的切片大小,例如:
slice = data[:a, :b, :c]

因为我只能获得一个 [a, b, c] 的列表,我想知道如何将这个列表转换为切片索引。或者是否有一种方法将列表与切片索引连接起来,以便操作这个数组:

list = [a, b, c]
slice = data[list]
任何回复都将不胜感激。

你是用numpy还是纯Python列表? - Julien
我正在使用numpy列表。 - American curl
1个回答

12

使用slice()函数。

my_list = [a, b, c]
my_slices = tuple(slice(x) for x in my_list)
my_slice = data[my_slices]

(我更新了变量名称以避免错误地遮蔽内置变量。)

slice(x) 等同于切片 :xslice(x, y, z) 等同于 x:y:z


谢谢您的快速回复!我尝试了您的方法。但是它返回了一个“TypeError:'tuple' object is not callable”错误。 - American curl
尝试进行干净的运行。我认为您在会话中覆盖了 slice。永远不要使用内置函数的名称作为自己的变量或函数名称。 - Matthias
你是否使用了“元组”或“切片”作为变量名?如果是的话,你应该重命名你的变量以避免与内置名称冲突。 - user6732794

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,