我有一个长度未知的列表A和一个切片对象,该对象指示此列表中的重要元素。如何获得相应的索引作为列表B?(因此,而不是例如slice(0, 5, 1)
得到[0, 1, 2, 3, 4]
),即使我在定义slice对象之前不知道列表的长度,对于像这样的slice也应如此s=slice(None, None, 20)
。
我的解决方案如下:
indices_B = list(range(len(my_list_A)))[my_slice]
它有效,但是我感觉必须有一种更聪明的方式,也应该更容易理解。(使用range(len(somelist))
感觉肯定是错误的)
indices_B = range(*my_slice.indices(len(my_list_A)))
https://docs.python.org/3/reference/datamodel.html#slice.indices
我认为您必须转换以列出每个范围
很少:范围支持大多数列表操作(它们是正确的序列),而且便宜得多。如果您需要将其传递给仅适用于实际列表的内容,那么可以,但这是一个单独的问题。
OP问题表明所需的输出是一个列表
您的代码不适用于my_slice = slice(无,无,20)
“ OP问题表明所需的输出是一个列表” OP想要索引,他们从不说自己需要列表