【问题标题】:Is there a smarter way for getting the indices of a list sliced with a sliced object?有没有更聪明的方法来获取用切片对象切片的列表的索引?
【发布时间】:2020-05-17 02:30:40
【问题描述】:

我有一个长度未知的列表 A 和一个切片对象,该对象指示此列表中的重要元素。我怎样才能获得相应的索引作为列表 B? (所以不是slice(0, 5, 1),而是[0, 1, 2, 3, 4])即使在定义切片对象之前我不知道列表的长度以及s=slice(None, None, 20)之类的切片,这也应该有效。

我的解决方案如下:

indices_B = list(range(len(my_list_A)))[my_slice]

它有效,但我有一种感觉,必须有一个更聪明的方式,也更容易理解。 (用range(len(somelist))感觉肯定不对)

【问题讨论】:

    标签: python list indexing range slice


    【解决方案1】:
    indices_B = range(*my_slice.indices(len(my_list_A)))
    

    https://docs.python.org/3/reference/datamodel.html#slice.indices

    【讨论】:

    • 我认为你必须转换为列出每个范围
    • 很少:范围支持大多数列表操作(它们是正确的序列)并且它们要便宜得多。如果您需要将其传递给仅适用于实际列表的东西,那么可以,但这是一个单独的问题。
    • OP 问题表明所需的输出是一个列表
    • 您的代码不适用于 my_slice=slice(None, None, 20)
    • “OP 问题表明所需的输出是一个列表”OP 想要索引,但他们实际上从未说过他们需要一个列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2014-01-15
    相关资源
    最近更新 更多