Скажем, у меня есть массив foo
, например. элементы [1, 2, 3]
, и что я хочу извлечь элементы из foo
, как если бы foo
был «бесконечно конкатенированный».Циклическое индексирование списков в Python
Например foo[0:2]
вернется (как обычный список):
[1, 2]
и foo[0:5]
вернутся:
[1, 2, 3, 1, 2]
в то время как foo[7:13]
вернется:
[2, 3, 1, 2, 3, 1]
Существуют ли какие-либо контейнеры данных в Python или расширенные модули, которые уже облегчают этот тип доступа? Если нет, то каким будет хороший/простой способ предоставить этот контейнер?
Я не знаю контекста OP, но большинство из этих проблем, по-видимому, разрешимо, определяя новую структуру данных как неизменный тип, и этого может быть достаточно для него/нее. Не то чтобы вы ошибаетесь - я тоже буду использовать ваш подход! - но интересно, что такое ограничение может решить некоторые проблемы и, если OP действительно нуждается в этом поведении, вероятно, ограничение также действует в проблеме OP. – brandizzi
@brandizzi, хороший пункт. Возможно, «class cyclicaltuple (tuple): ...» - это путь. – shx2
Кортеж был бы семантически неправильным. Кортеж - это запись с фиксированным и известным количеством элементов. Также вы не можете назвать это 'cyclist' :) Я думаю, что достаточно произнести' cyclist 'immutable (возможно, наследуется от' collections.Sequence'). –