Есть ли более умный способ получить индексы списка, нарезанного нарезанным объектом? - PullRequest
1 голос
/ 31 января 2020

У меня есть список A неизвестной длины и объект среза, который указывает важные элементы в этом списке. Как я могу получить соответствующие индексы в виде списка B? (Таким образом, вместо slice(0, 5, 1) я получаю [0, 1, 2, 3, 4]) Это должно работать, даже если я не знаю длину списка до определения объекта среза, а также для срезов, таких как s=slice(None, None, 20).

My Решение заключается в следующем:

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

Это работает, но у меня есть ощущение, что должен быть более разумный способ, который также легче понять. (Использование range(len(somelist)) определенно неправильно)

1 Ответ

1 голос
/ 31 января 2020
indices_B = range(*my_slice.indices(len(my_list_A)))

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

...